У меня проблема с зависанием приложения и выдачей по умолчанию всплывающего окна «Пожалуйста, сообщите Microsoft об этой проблеме» вместо диалогового окна «необработанное исключение» в приложении.
В коде приложения и Application.ThreadException, и AppDomain.CurrentDomain.UnhandledException перенаправляются на метод, который записывает журнал ошибок на диск, сохраняет скриншот на диск и отображает понятное диалоговое окно.
Но когда возникает эта ошибка, ничего из этого не происходит. Все, что я получаю, это в программе просмотра событий:
EventType clr20e3, P1 myapp.exe, P2 4.0.0.0, P3 47d794d4, P4 mscorlib, P5 2.0.0.0, P6 471ebc5b, P7 15e5, P8 27, P9 system.argumentoutofrange, P10 NIL
Учитывая, что ошибка появляется только после того, как приложение работает в течение нескольких часов, мне интересно, может ли это быть проблемой утечки памяти. Я немного искал "clr20e3", но мне удалось найти только материал ASP.Net. Мое приложение - Windows Forms (.Net 2.0) exe, использующее довольно много сборок - как на C #, так и на некоторых неуправляемых C ++.
Полагаю, что это также может быть ошибка в методе обработки ошибок. Как показывают некоторые ответы, я могу попробовать войти в систему при запуске обработчика ошибок (но, учитывая, что это в любом случае то, что я делаю в любом случае ...).
Любая помощь в решении этой проблемы будет принята с благодарностью - будь то решения или предложения о том, как определить первопричину проблемы.
ОБНОВЛЕНИЕ: Основной причиной первоначальной ошибки был доступ к массиву с отрицательным индексом (это был system.argumentoutofrange). Почему это не было поймано в ловушку, для меня немного загадка, но, учитывая, что оба исключения были отправлены в один и тот же код обработки, мне интересно, возможно, не было условия, когда (например) оба были вызваны и сражались за ресурс (например, файл журнала)?
Мне удалось доказать это, выполнив EventLog.WriteEntry, прежде чем что-либо еще в коде обработки ошибок. Теперь, добавив флаг для предотвращения повторного ввода в обработке ошибок, у меня больше не возникает проблем ...