如果我了解您的要求正确,则可以执行以下操作(代码未经测试,但显示了总体思路):
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}void worker_DoWork(object sender, DoWorkEventArgs e){ while(!e.Cancel) { // do something } _resetEvent.Set(); // signal that worker is done}


