Reputation: 4963
I am using background worker class in code as
private void bwFilter_DoWork(object sender, DoWorkEventArgs e)
{
//Some Code
}
private void bwFilter_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//Some code
}
Now i am calling this events in a button click as
btnClick_Click(Object Sender,EventArgs e)
{
bwFilter.RunWorkerAsync();
}
Now i wanna do something in btnClick only after bwFilter_RunWorkerCompleted is completed. I try the follwing but result in deadlock situation
btnClick_Click(Object Sender,EventArgs e)
{
bwFilter.RunWorkerAsync();
While(bwFilter.IsBusy)
{
Continue;
}
//Start coding Again Here
}
Upvotes: 0
Views: 200
Reputation: 941715
Waiting for the background worker to finish completely defeats the point of using a worker. And inevitably causes deadlock.
So just don't bother, call bwFilter_DoWork() directly.
Upvotes: 1
Reputation: 35477
Use the RunWorkerCompleted
event, see http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.runworkercompleted.aspx
bwFilter.RunWorkerCompleted += (s, e) => { ... do something ... };
bwFilter.RunWorkerAsynch();
Upvotes: 1