VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
バックグラウンド操作のキャンセルするは、下記手順で行います。
1.WorkerSupportsCancellationプロパティをtrueにします。(規定値はfalse)
このプロパティをTrueにしないとキャンセルを受け付けることができません。
2.CancelAsyncメソッドを呼び出します。
これによって、BackgroundWorkerコンポーネントのCancellationPendingプロパティがtrueに設定されます。
3.重い処理を行っている場合は、CancellationPending に true を設定し損ねる場合があるため、定期的にチェックして、trueになっていれば「e.Cancel」をtrueに設定して、DoWorkイベント・ハンドラを抜けることができるようにします。
private void Form1_Load(object sender, EventArgs e) { //バックグラウンド操作をキャンセルできるようにする this.backgroundWorker1.WorkerSupportsCancellation = true; } //バックグランド処理実行用ボタンクリック時の処理 private void button1_Click(object sender, EventArgs e) { //バックグラウンド操作の実行を開始する this.backgroundWorker1.RunWorkerAsync(); } //バックグランドキャンセル用ボタンクリック時の処理 private void button2_Click(object sender, EventArgs e) { if (this.backgroundWorker1.IsBusy) //バックグランド処理をキャンセルする this.backgroundWorker1.CancelAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { //バックグラウンドで実行する処理をここに記述します for (int i = 0; i < 1000; i++) { //処理中にキャンセルされていないかを定期的にチェックする if (this.backgroundWorker1.CancellationPending) { e.Cancel = true; return; } System.Threading.Thread.Sleep(100); } }