Short of inserting a try/catch block in each worker thread method, is there a way to deal with unhandled, non-ui thread, exceptions in Windows Forms?
Thread.GetDomain().UnhandledException works great for catching the error, but by then it’s too late to do anything about it (besides log it). After control passes out of your UnhandledException handler the application will terminate. The best you can hope for is a generic Windows error that looks this:

All my research indicates that you must insert a try/catch block in the worker thread method, but I wanted to put this out there in case anyone had a different take.
Thanks.
If you want to do something about the error before it hits UnhandledException, then you need a try/catch in the thread method.
You should at least handle exceptions like FileNotFoundException here, where you can do something intelligent about it. If all else fails, you can use UnhandledException to cleanly handle anything you didn’t expect (which, hopefully, is nothing).