AppDomain.UnhandledException - это событие , а не глобальный обработчик исключений. Это означает, что к тому времени, когда оно поднято, ваше приложение уже находится на пути к истощению, и вы ничего не можете с этим поделать, кроме выполнения очистки и регистрации ошибок.
То, что произошло за кулисами, таково: платформа обнаружила исключение, поднялась вверх по стеку вызовов, не нашла обработчиков, которые могли бы восстановиться после ошибки, поэтому не смогла определить, безопасно ли продолжать выполнение. Итак, он запустил последовательность завершения работы и вызвал это событие вежливости к вам, чтобы вы могли выразить свое уважение к уже обреченному процессу. Это происходит, когда исключение остается необработанным в главном потоке.
Нет единого решения этой ошибки. Вам необходимо поместить настоящий обработчик исключений (блок перехвата) перед всеми местами, где возникает эта ошибка, и направить его (например) в глобальный метод / класс обработчика, который определит, безопасно ли просто сообщать и продолжать, основываясь на тип исключения и / или содержание.
Редактировать: можно отключить (= взломать) механизм сообщения об ошибках, встроенный в Windows, так что обязательное диалоговое окно «сбой и запись» не отображается, когда приложение закрывается. Однако это вступает в силу для всех приложений в системе, а не только для ваших собственных.