Есть несколько причин, по которым необработанное исключение не будет вызвано ни одной из них.
Dispatcher.UnhandledException
вызывается только для исключений, которые происходят в виде диспетчера, когда метод был введен посредством вызова Invoke или BeginInvoke ( документация ). Поэтому исключения в других потоках или методах, которые не были вызваны таким образом, пропустят этот обработчик событий.
.Net также внесла изменения в 4.0 в отношении того, какие исключения войдут в событие AppDomain.UnhandledException
. Поврежденные исключения состояния, такие как нарушения прав доступа и переполнения стека, больше не проходят через это событие.
Я не уверен, что любой из них будет иметь отношение к вам. Самый простой способ проверить это - просто подключить отладчик и посмотреть, какой вывод он выдает.