With Timer objects, I can set the SynchronizingObject property to avoid having to use invoke when updating the GUI from the timer\'s event handler.
Timer
SynchronizingObject
You may take a look at the BackgroundWorker class.