質問

私はユーザーコントロールレベルでバックグラウンドワーカーを使用していましたが、それは正常に動作していましたが、ヘルパー関数の1つでワーカーをプッシュしました。私の質問は、タスクをキャンセルしようとするまで正常に動作することです。 Dowork関数では、毎回Webサービスを呼び出すループがあり、サービスを呼び出す前に、キャンセルが保留中にキャンセルをチェックし、はいの場合はループを破る必要があります。

役に立ちましたか?

解決

1)設定していることを確認してください WorkerSupportsCancellation あなたのプロパティ BackgroundWorkerTrue.

2)Webサービスの参照を適切に処分していることを確認してください。 (とにかくあなたがすべきことだからです)

また、バックグラウンドワーカーを介してステップを踏み出し、キャンセルされたときに保留中のキャンセルが確実に設定されていることを確認することもできます。

これらのことが役に立たない場合は、バックグラウンドワーカーを作成および起動するためのコードを表示し、イベントのコード(dowork、runworkercompletedなど)を検討することを検討することをお勧めします。

編集(これは編集が実行されたときに削除されました)

また、これをチェックしたいかもしれません リンク.

そのリンクから入手する招待的なことは、キャンセルした場合でも、労働者がすでに仕事をしている場合(つまり、Doworkを介して処理する)、キャンセルペンディングを逃して仕事を続けることができるということです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top