質問: _backgroundWorker.IsBusy) { // キャンセル要求 _backgroundWorker.CancelAsync(); } } ```
回答: キャンセルボタンが押されたときも 閉じるボタンが押されたときも 同じ処理の流れになるようにしたほうがいいと思います。 閉じるボタンが押されたら とりあえず e.Cancel = true で閉じる処理をキャンセル、 _backgroundWorker.CancelAsync() をコールしてキャンセル処理を要求します。 _backgroundWorker が正常に終了するにしろキャンセルで終了するにしろ、 最終的にはダイアログを閉じる処理を記述していると思うので、 閉じる処理がされた場合はとりあえずキャンセルを要求するだけでいいのではないでしょうか。 Closing イベントハンドラの中では _backgroundWorker.IsBusy プロパティなどを見て e.Cancel = true するかどうか分岐させておけばいいでしょう。