I don't think so really.. your error handling is in the same routine that is in the seperate thread, so it should work.

If you take out all your error handling, do you see the exact place the code hits the exception?

You could also try adding try/catch blocks in the actual DoWork routine, and see if you get any different behavior then.