When Control.BeginInvoke is called, the following sequence of events occur:
- The delegate object is added to the message queue of the UI thread.
- The UI thread checks the message queue for pending delegate objects.
- When the delegate object is at the front of the message queue, the UI thread dequeues it and executes it.
- The delegate object's return value (if any) is discarded.