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(); })); }); }