met*_*eat 2 c# backgroundworker windows-forms-designer visual-studio-2012
我正在尝试学习如何在我的项目中使用后台工作人员,但我不断收到错误,我只是不知道该怎么做。在设计器中我创建了backgroundWorker1和一个按钮。
private void btnNewSchedule_Click(object sender, EventArgs e)
{
BackgroundWorker bw = new BackgroundWorker();
bw = backgroundWorker1;
Scheduletest(bw);
}
private void Scheduletest(BackgroundWorker bw)
{
//junk code
//do the expensive coding part now
bw.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)
当我单击按钮运行工作程序一次时,它工作正常,但第二次单击时,我收到错误“此操作已经调用了OperationCompleted,并且进一步的调用是非法的”
我读到我每次都必须创建一个新的后台工作实例,这就是我尝试对 bw 后台工作人员执行的操作,但我认为该部分不正确。有人可以帮助我重新使用这个按钮吗?
万分感谢
您所做的确实是创建一个新实例,但随后您重新分配了旧实例。
BackgroundWorker bw = new BackgroundWorker();
bw = backgroundWorker1;
Run Code Online (Sandbox Code Playgroud)
所以现在,bw不包含新实例,而是旧实例。以下是正确的做法:
BackgroundWorker bw = new BackgroundWorker();
Scheduletest(bw);
Run Code Online (Sandbox Code Playgroud)