Universal Messaging VBA : How the RTD Server Works
Excel is a single threaded application which means that asynchronous behavior is limited. Most asynchronous systems make use of either push or pull methods of receiving data.
Both of these methods have limitations. Pushing data to Excel when Excel is busy* wil mean that any events pushed will be dropped as Excel cannot deal with them. If Excel is required to pull from the server, then because it does not know when the data is available it will have to continually send requests to the server.
For this reason Excel uses a hybrid of both mechanisms. Once events are received, the Universal Messaging RTD server will send a notification to Excel to say that data is available. Excel will then respond to this notification by requesting the RTD server to send the data. This does however mean that if Excel is busy, although no events will be dropped, the notification sent to Excel may be ignored. The Universal Messaging RTD Server deals with this by queueing events internally.
*Excel is said to be busy whenever it is recalculating but also when the user responds to dialog prompts or enters data into a cell.