The first option is to send a Windows message to yourself. Thus, it will not be sent until your thread starts pumping messages. The second option is to hook into the Application.Idle event, which fires when the message queue is empty. The third option is to set and start the timer for a short duration and connect to the Tick event when it expires. The fourth and last at the moment is to run the delegate asynchronously, since they use the message queue as a mechanism to run.
Phil wright
source share