ユーザーコントロールレベルでBackgroundWorkerを使用していて、正常に機能していましたが、ヘルパー関数の1つにワーカーをプッシュしました。質問は、タスクをキャンセルしようとするまで正常に機能することです。DoWork関数には、毎回Webサービスを呼び出すループがあり、サービスを呼び出す前にキャンセルが保留中であることを確認し、そうであればループを解除する必要があります。
1 に答える
4
1)のWorkerSupportsCancellationプロパティがに設定されていることを確認BackgroundWorkerしますTrue。
2)Webサービス参照を適切に破棄していることを確認してください。(とにかくそれがあなたがすべきことだからです)
また、BackgroundWorkerをステップスルーして、キャンセル時にキャンセル保留プロパティがtrueに設定されていることを確認することもできます。
これらのいずれも役に立たない場合は、バックグラウンドワーカーを作成および開始するためのコードと、イベント(DoWork、RunWorkerCompletedなど)のコードを表示することを検討してください。
編集(これは、編集を実行したときに削除されました)
このリンクもチェックしてみてください。
そのリンクから得られる重要なことは、キャンセルした場合でも、ワーカーがすでに作業を行っている場合(つまり、DoWorkによる処理)、キャンセル保留を見逃して作業を続行できることです。
于 2010-10-21T15:53:26.447 に答える