Since the ProgressChanged event handler is created from somewhere inside the DoWork event DoWork , shouldn't they be called in the asynchronous operation thread, which DoWork also works instead of the user interface thread, and therefore require Invoke or BeginInvoke to control the controls?
I guess some kind of magic happens in the ReportProgress method, but how does it even know which one is the right thread to call ProgressChanged event handlers on?
source share