Also wanted to follow up on threading -- threading itself isn't a big deal, but there is one more catch when adding Windows.Forms to the mix. If you get an error like:

An unhandled exception of type 'System.ArgumentException' occurred in

Additional information: Controls created on one thread cannot be parented to a control on a different thread.

... you need to read this technote at Microsoft. Better do it quickly, though; Microsoft has a bad habit of changing URLs.