In Visual Studio 2005, if you have a windows form and have a fair amount of threading going then that things can get pretty frustrating. As you know, because of the way that Windows handles its user interface, you should only be updating the user interface from the main thread. If you try to do it on other threads, bad things happen, and they can be pretty hard to track down. Windows forms includes some code to detect when that is happening, but it can’t do it in all cases. When you get in this situation, you need to call Invoke() on the form, and pass it a delegate to the function that you want to be called on the main thread. Eric discusses this in <strong>detail</strong> which is a recommended read if you play with a lot of threads on your Win Forms.