2012-05-25 9 views
5

は、私たちはできるようSO threadで説明したように(しゃれが意図し、子猫を救う!)古いと危険なThread.Abort()でいくつかの方法で.NET 4.0 Task objectを殺すことができる.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クラスを設計し、かつ意図されます破壊的な「打ち切り」スタイルの取り消しに頼る代わりに、新しいCooperative Cancellation modelの.NET 4を使用することができます。

(つまり、どのような場合に使用する非常に悪いだけれども同様Thread.Abort()、)が、request that the Task cancel itselfにツールを提供する代わりに、全体のフレームワークがあるTaskをキャンセルする直接的な方法はありません。

+1

ええ、私はCancelationTokenSourceとその方法をどのようにすべきかを見てきましたが、サードパーティ製のハードウェアAPIと話す作業を中止する必要があるケースがあり、私はそれを行うのが不安定になります。再度、感謝します!。 – kenny

+0

@kennyこれを許可するメカニズムは 'Task'にありません。 –

+0

ありがとう、私は廃止されたスレッドオブジェクトを使用する必要があります。 – kenny

関連する問題