.NETバックグラウンドワーカーはキャンセルしません
-
10-10-2019 - |
質問
私はユーザーコントロールレベルでバックグラウンドワーカーを使用していましたが、それは正常に動作していましたが、ヘルパー関数の1つでワーカーをプッシュしました。私の質問は、タスクをキャンセルしようとするまで正常に動作することです。 Dowork関数では、毎回Webサービスを呼び出すループがあり、サービスを呼び出す前に、キャンセルが保留中にキャンセルをチェックし、はいの場合はループを破る必要があります。
解決
1)設定していることを確認してください WorkerSupportsCancellation
あなたのプロパティ BackgroundWorker
に True
.
2)Webサービスの参照を適切に処分していることを確認してください。 (とにかくあなたがすべきことだからです)
また、バックグラウンドワーカーを介してステップを踏み出し、キャンセルされたときに保留中のキャンセルが確実に設定されていることを確認することもできます。
これらのことが役に立たない場合は、バックグラウンドワーカーを作成および起動するためのコードを表示し、イベントのコード(dowork、runworkercompletedなど)を検討することを検討することをお勧めします。
編集(これは編集が実行されたときに削除されました)
また、これをチェックしたいかもしれません リンク.
そのリンクから入手する招待的なことは、キャンセルした場合でも、労働者がすでに仕事をしている場合(つまり、Doworkを介して処理する)、キャンセルペンディングを逃して仕事を続けることができるということです。
所属していません StackOverflow