Catching Unhandled Exceptions in Child Threads in WPF
This is by design, you should use a try/catch at the top-level of DoWork. Some threading models cater for this, take a look at the Backgroundworker for an example.
The .NET 4 Task class provides a nice interface to this problem. Until then, you will have to take care of it yourself, or use the BGW or IAsyncResult models.