私はこの回答から以下の貼り付けコードによって解決されたそのほとんどが既存のGUI、問題にパッチを適用しようとしています - >How to wait for a BackgroundWorker to cancel?BackgroundWorkerがDoWorkに渡される前にDoWorkEventArgsを取得できますか?
private BackgroundWorker worker = new BackgroundWorker();
private AutoResetEvent _resetEvent = new AutoResetEvent(false);
public Form1()
{
InitializeComponent();
worker.DoWork += worker_DoWork;
}
public void Cancel()
{
worker.CancelAsync();
_resetEvent.WaitOne(); // will block until _resetEvent.Set() call made
// IS THERE ANY WAY TO TELL IF THE BACKGROUNDWORKER STOPPED DUE TO e.Cancel here???
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
while(!e.Cancel)
{
// do something
}
_resetEvent.Set(); // signal that worker is done
}
私の質問は、キャンセルの最後にコメントとして追加されます関数。この時点でバックグラウンドワーカーがシャットダウンした理由を知る方法はありますか?
「worker.CancellationPending'? –