たとえば、タイムアウト後に長時間実行されているバックグラウンド ワーカーをきちんとキャンセルする方法はありますか?
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");
}
}
また、キャンセル イベント用に変更する必要があります。ただし、長時間実行されるタスクを自動的にキャンセルできる「組み込み」のものはありますか、それともタイムアウト時にキャンセルするタイマーを作成する必要がありますか? ありがとう。