使用CancellationPending属性来手动停止BackgroundWorker的执行。
代码示例:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker;
while (!worker.CancellationPending)
{
// 执行任务的代码
if (任务完成条件)
{
worker.ReportProgress(100);
break;
}
}
e.Cancel = true; // 设置CancellationPending为true
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled) { // BackgroundWorker已经被取消 } else if (e.Error != null) { // 出错 } else { // 执行完成 } }
private void button1_Click(object sender, EventArgs e) { if (backgroundWorker1.IsBusy) { backgroundWorker1.CancelAsync(); // 手动停止BackgroundWorker的执行 } }