I have a console app that I’m porting to WPF. The application has 3 worker threads, that are all joined to the main thread before some output results are printed to the screen. My understanding is that, if I try and do the same thing in a WPF application, the GUI will be blocked and will not be reponsive to the user. How then can I notify the parent thread that all the threads have completed their work? I think the solution is going to involve delegates and events (or maybe BackgroundWorker?), but it was not clear to me how to get the callback invoked when the thread terminated.
Original Code:
foreach (Thread t in threadList)
{
t.Start();
}
foreach (Thread t in threadList)
{
t.Join();
}
// print some results here
If you are using three
BackgroundWorkers, you can use the eventRunWorkerCompletedto notice that one of the workers is completed: Before starting the workers set a counter to 3 then decrement and check this counter in the method called byRunWorkerCompletedif it hits 0 you are finished.