Ben,
You can only update the UI from the thread the UI was created on. To update the UI in a thread safe manner you can use the form's Invoke method.
This should help you out.
http://msdn.microsoft.com/msdnmag/issues/05/03/AdvancedBasicsIn DotNet 2.0 you can use the BackgroundWorker component and subscribe to a few events which makes the process a whole lot easier.
Regards
Neil