There are a couple of reasons why an unhandled exception would not be raised by either of these.
The Dispatcher.UnhandledException
is only raised for exceptions that occur in the look of the dispatcher where the method was entered via an Invoke or BeginInvoke call (documentation). So exceptions on other threads or methods that were not invoked in this way will miss this event handler.
.Net also made a change in 4.0 to what exceptions will go into the AppDomain.UnhandledException
event. Corrupted state exceptions such as access violations and stack overflows no longer go through this event.
I'm not sure if either of these will be relevant to you. The simplest way to check is to just attach a debugger and see what output it produces.