Under .NET 2.0 an unhandled exceptions on a secondary thread now are no longer swallowed by the framework - instead they will shut the app down.
However using the AppDomain.UnhandledException event will handle this - or you can revert to .NET 1.1 behavior by adding this line to your config: <legacyUnhandledExceptionPolicy enabled="1" />
You should now use a try/catch block on every thread entry method. See this great doc on threading (page 12 inparticular).
Thanks to Matt and Jan for this