我在代码中使用后台工作者类
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
}
答案 0 :(得分:1)
使用RunWorkerCompleted
事件,请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.runworkercompleted.aspx
bwFilter.RunWorkerCompleted += (s, e) => { ... do something ... };
bwFilter.RunWorkerAsynch();
答案 1 :(得分:1)
等待后台工作人员完全失败了使用工人的意义。并且不可避免地导致僵局。
所以只是不要打扰,直接调用bwFilter_DoWork()。