2012-05-25 48 views
5

我可以殺死.NET 4.0 Task object一些方法就像我們可以用舊的和危險的Thread.Abort()SO thread討論(雙關語意,並保存小貓!)殺死.NET 4任務?

肯尼

+0

重複的項目:http://stackoverflow.com/questions/4359910/is-it-possible-to-abort-a-task-like-aborting-a-thread-thread-abort-method – Kai

+0

我知道這是危險的,但是可以做到嗎?我想你說的不是。 – kenny

+0

@kenny對「Task」沒有太多瞭解 - 如果事先知道TaskScheduler正在使用的是Task的專用線程,則可以在該線程上調用Abort。話雖如此,以這種方式設計系統是一個非常糟糕的主意。 –

回答

2

Task類的設計,並打算,以使用.NET 4的新的Cooperative Cancellation model,而不是依賴於破壞性的「中止」式取消。

有取消Task沒有直接的方法(如Thread.Abort(),儘管這非常糟糕在任何情況下使用),但有一個地方提供的工具來request that the Task cancel itself整個框架。

+1

是的,我已經看到了CancelationTokenSource和合作方法應該如何完成,但我有一個情況,我需要中止任務(與第三方硬件API交流),我願意不穩定地去做。再次感謝!。 – kenny

+0

@kenny'Task'中沒有任何機制允許這樣做。 –

+0

好的,謝謝,我將不得不使用棄用的Thread對象。 – kenny