I have a procedure that uses a BackgroundWorker and updates a log window in my main form. Simple stuff.
I use this procedure for more than one task, incorporating more than one procedure. In the case I solved here, I had to wait for one BackgroundWorker to complete before moving on with the code in the Main Thread. I couldn't trigger it in the RunWorkerComplete event, as the BackgroundWorker was used multiple times throughout the application.
So here it is: (I used ThreadPool and Invoked the actions!)
private void Button1_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(delegate
{
Invoke(new Action(delegate { ProcedureWithBackgroundWorker(); }));
while (BW.IsBusy)
{
Thread.Sleep(100);
}
Invoke(new Action(delegate { SecondProcedureThatWaitsForTheOneAboveToFinish(); }));
});
}