I think the answer is yes, but just wanted to make sure:
Can I assume that when a timer event fires, its inserting a message in the main messaging loop so that no race conditions occur between the calls made from within that event and the code running in the main thread?