I\'m working with the following components:
That is the correct pattern for BackgroundWorker.
I suspect the problem is that your Main
method is exiting before the BW has completed.
RunWorkerAsync
will return immediately and if you are not waiting in Main
, then your process will end, perhaps even before the BW has started, never mind completed.
Try adding a Console.ReadLine
at the end of your Main
method.
Out of interest:
BW behaves differently in a Console app and a Windows app. If you use a WinForms or WPF app, there will be a derived SynchronizationContext on your UI thread and BW will marshal RunWorkerCompleted
back to the UI thread and run it there. That's one of the main benefits of BW.
In a Console App, the default SynchronizationContext is used and this marshals RunWorkerCompleted
onto a thread pool thread. This means you can block the Main
thread and the completed handler will still run.