私はいくつかの異なる機能とループを持つバックグラウンドワーカーを持っています。 私がインターネット上で見つけたすべての例は、それぞれ1つのループと1つの関数でしかありません。 ボタンを使用して作業者をキャンセルする簡単な解決策が存在するかどうかを知りたい。 私は最適ではない2つの解決策しか知りません。ここのように中止して、私がすることを望む(How to “kill” background worker completely?)C#で複数の方法でバックグラウンドワーカーをキャンセルするにはどうすればよいですか?
BackgroundWorkerのスレッドを殺す: - :
1>長いと混乱コード
loop
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
do calculation
}
}
2の場合/他のすべての関数/ループに追加その時点でどのループや関数が実行されていてもキャンセルボタンを押すとすぐに計算が停止します。 私のものよりも良い機会はありますか?
編集:私はに多くの異なるループがあるので、How can I cancel a Task without LOOPが私の問題を解決する必要がある理由はわかりません
[どのようにタスクを取り消すことができるのが重複する可能性LOOPなし](http://stackoverflow.com/questions/24312139/how-can-i-cancel-a-task-without-loop) – user3185569