BackgroundWorker:DoWork()事件处理程序完成后就死掉了吗?

我得到的是一旦你完成你的工作与DoWork()处理程序,然后也许做一个RunWorkerCompleted(),然后你可以重新调用RunWorkerAsync(),并重新进入DoWork()处理程序,或做你需要做另一个“新”操作并创build一个新的BackgroundWorker? 只是想知道在这些事情发生之后是否进行了任何处置或其他清理工作,现在你已经不再有可行的工作人员了。

你可以调用RunWorkerAsync只要你喜欢。 您不需要创建一个新的BackgroundWorker对象。


唯一的限制是,当BackgroundWorker当前已经忙于异步操作时,无法调用它。 所以一个常见的方法是:例如,当用户单击按钮时调用RunWorkerAsync 。 然后,禁用该按钮,并在RunWorkerCompleted事件的处理程序中重新启用它:

 void DoWorkButton_Click(object sender, EventArgs e) { DoWorkButton.Enabled = false; Worker.RunWorkerAsync(); } void Worker_DoWork(object sender, DoWorkEventArgs e) { // Do some async operation. } void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { try { // Do some updates. } finally { DoWorkButton.Enabled = true; } }