質問: _backgroundWorker.IsBusy) { // キャンセル要求 _backgroundWorker.CancelAsync(); } } ```
回答: こんにちは。 泥臭いですが、フラグで制御する感じです。 少なくとも、Backgroundworkerの標準機能としては用意されてないです。 UIスレッドとバックグラウンドスレッドで共有できるフラグを用意し、 UIスレッドでキャンセルダイアログを表示したタイミングでフラグを更新します。 要はCancelAsynのCancellationPendingと同じで、 DoWorkで定期的にステータスのチェックをする必要があるでしょう。 BackgroundWorker.CancellationPending.aspx) Pausing and Resuming Threads.aspx) 私は使ったことないですが、Threadクラスには過去上記のような仕組みが用意されていたようですが、現在は推奨されていないようですので、やはりフラグで制御したほうが良いのではないかなという感じです。