我想说的是,当你完成DoWork()处理程序的工作并且可能执行RunWorkerCompleted()后,是否可以重新调用RunWorkerAsync()并使其重新进入DoWork()处理程序,还是需要进行另一个“new”操作并创建一个新的BackgroundWorker?只是想知道在这些事情发生后是否进行了任何清理或其他清除操作,现在你不再拥有可行的bg worker。
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;
}
}
RunWorkerAsync
之前等待事件。 - Lasse V. Karlsen