0

これは、バックグラウンドワーカーをセットアップする方法です

問題は、プロセスを途中で終了するにはどうすればよいかということです。現在の処理を停止するキャンセル ボタンを作成する必要があります。

以下の行を使用することを考えました...

if ((worker.CancellationPending == true))
                {
                    e.Cancel = true;
                }

...そして内部に AllocateTrades2 メソッドをカプセル化しますが、それは別の場所から Cancel Flag を呼び出さなければならないことを意味し、メソッドの処理が完了した後にのみそれをチェックします。

また、ユーザーが同じ操作をもう一度クリックすると、ワーカーが使用されているという例外がスローされるため、何もしていないふりをすることはできません。

私がやりたいことの例:

public void bw_DoWork(object sender, DoWorkEventArgs e)
{
    AllocateTrades2();
}
public void AllocateTrades()
{
    Method1();
    CheckTerminate();

    Method2();
    CheckTerminate();

    //Click the cancel button in the UI during method 3 processing
    Method3();
    CheckTerminate();
}

そして、CheckTerminate() はすべての処理を停止し、将来の呼び出しに使用できるようにします。私がやろうとしていることは可能ですか?

4

2 に答える 2