后台工作人员重用错误 C#

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 后台工作人员执行的操作,但我认为该部分不正确。有人可以帮助我重新使用这个按钮吗?

万分感谢

Sys*_*own 5

您所做的确实是创建一个新实例,但随后您重新分配了旧实例。

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)