1

たとえば、タイムアウト後に長時間実行されているバックグラウンド ワーカーをきちんとキャンセルする方法はありますか?

private void bw_DoWork(object sender, DoWorkEventArgs e)
{
    ComplexRowContainer crc = (ComplexRowContainer)e.Argument;
    string filename = crc.AppFullPath;
    string calculatedChecksum = BuildChecksum(filename);

    e.Result = calculatedChecksum;
}

private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    string newChecksum = (string)e.Result;
    if (newChecksum.Equals(oldChecksum))
    {
        MessageBox.Show("Same");
    }
    else
    {
        MessageBox.Show("Different");
    }
}

また、キャンセル イベント用に変更する必要があります。ただし、長時間実行されるタスクを自動的にキャンセルできる「組み込み」のものはありますか、それともタイムアウト時にキャンセルするタイマーを作成する必要がありますか? ありがとう。

4

2 に答える 2