0

我在代码中使用后台工作者类作为

private void bwFilter_DoWork(object sender, DoWorkEventArgs e)
    {            
       //Some Code
    }
    private void bwFilter_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {          
       //Some code
    }

现在我在按钮单击中调用此事件

btnClick_Click(Object Sender,EventArgs e)
{
      bwFilter.RunWorkerAsync();       
} 

现在我只想在 bwFilter_RunWorkerCompleted 完成后在 btnClick 中做一些事情。我尝试以下但导致死锁情况

 btnClick_Click(Object Sender,EventArgs e)
{
      bwFilter.RunWorkerAsync();
      While(bwFilter.IsBusy)
      {
          Continue;
      }   
     //Start coding Again Here    
} 
4

2 回答 2

1

使用RunWorkerCompleted事件,见http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.runworkercompleted.aspx

bwFilter.RunWorkerCompleted += (s, e) => { ... do something ... };
bwFilter.RunWorkerAsynch();
于 2013-02-08T06:57:39.370 回答
1

等待后台工作人员完成完全违背了使用工作人员的意义。并且不可避免地造成僵局。

所以不要打扰,直接调用 bwFilter_DoWork() 。

于 2013-02-08T09:06:26.507 回答