Что может привести к тому, что приложение .NET WinForms закроется без диалога?

Сообщается, что наше приложение WinForms иногда просто
закрывается самостоятельно. Он не показывает наш собственный диалог
отправки ошибок при сбое или диалоговое окно отправки ошибок
Windows, оно просто закрывается и исчезает, часто, когда человек
был аффик и ничего не делает с приложением. Кажется, это редкое
явление, возможно, 2-3 раза в месяц, и это случается с более чем
одним человеком. Я понятия не имею, с чего начать с получения
рецензии или где начать отслеживать это.

C # .NET 2.0 Зарегистрированные случаи находятся в Win XP

У кого-нибудь есть идеи?

Переполнение стека из-за бесконечной рекурсии является большой
причиной отказа приложений без предупреждения. Если вы не сделали
что-то преднамеренное, чтобы вызвать молчащий выход, тогда
необработанные исключения (кроме переполнения стека) обычно
отображают некоторый пользовательский интерфейс перед тем, как
приложение завершит работу. Переполнение стека является наиболее
распространенным исключением (oops, sorry) для этого правила.

Конечно, из неуправляемого или небезопасного кода почти
наверняка можно нарушить время выполнения, чтобы вызвать молчащий
выход.

Хорошие предложения по инструментарию и просмотр журнала событий
Windows.



Исключения заставят приложение «исчезнуть». Проверьте журналы
событий, чтобы узнать, есть ли что-нибудь.

Проверьте диспетчер задач, чтобы убедиться, что процесс все еще
присутствует, когда окно исчезает. У меня произошел сбой проводника
и не удалось перерисовать окно до тех пор, пока оно не было
Alt-Tabbed или Switched-To (из диспетчера задач).

Не помещайте это мимо пользователей, чтобы удобно забыть, что
они закрывают приложение. Возможно, вы захотите добавить в
приложение некоторую логику регистрации, чтобы регистрировать
закрытые пользователем сеансы. В следующий раз, когда он
«исчезнет», вы можете проверить наличие записей в журнале.



Вы можете добавить некоторую логику в событие FormClosing, чтобы
спросить у пользователя, действительно ли это то, что они
действительно хотят сделать, вы можете отменить закрывающее
событие, и ваше приложение будет продолжать работать, если все
будет хорошо. Если вы продолжаете замечать эту проблему, и она
никогда не выполняет вашу логику, вам придется загрязнять руки в
отладчике.