Сообщается, что наше приложение WinForms иногда просто закрывается само по себе. Он не показывает ни наше собственное диалоговое окно отправки ошибки при сбое, ни диалоговое окно отправки ошибки Windows, оно просто закрывается и исчезает, часто, когда человек был сброшен и ничего не делал с приложением. Кажется, это редкое явление, может быть, примерно 2-3 раза в месяц, и такое случается более чем с одним человеком. Я понятия не имею, с чего начать, чтобы получить репутацию или где начать отслеживать это.
C# .NET 2.0 Сообщенные случаи относятся к Win XP
У кого-нибудь есть идеи?





Исключения заставят приложение «исчезнуть». Проверьте журналы событий, чтобы увидеть, было ли там что-нибудь.
Проверьте диспетчер задач, чтобы увидеть, продолжается ли процесс, когда окно исчезнет. У меня был сбой проводника, и я не мог перерисовать окно, пока оно не было Alt-Tabbed или Switched-To (из диспетчера задач).
Не забывайте, что пользователи легко забывают, что закрывают приложение. Вы можете добавить в приложение логику ведения журнала для регистрации закрытий, инициированных пользователем. В следующий раз, когда он «исчезнет», вы можете проверить наличие каких-либо записей в журнале.
Кроме того, приложение не создает новый экземпляр, если уже существует другой процесс, и они смогли повторно открыть приложение, поэтому оно действительно вылетало беззвучно, но в целом это хорошие вещи, которые нужно проверить.
Вы можете добавить некоторую логику в событие FormClosing, чтобы спросить пользователя, действительно ли это то, что он действительно хочет сделать, затем вы можете отменить событие закрытия, и ваше приложение продолжит работу, если все в порядке. Если вы продолжаете замечать эту проблему, и она никогда не выполняет вашу логику, вам придется испачкать руки в отладчике.
Переполнение стека из-за бесконечной рекурсии - большая причина того, что приложения закрываются без предупреждения. Если вы не сделали что-то намеренно, чтобы вызвать тихий выход, то необработанные исключения (кроме переполнения стека) обычно будут отображать какой-то пользовательский интерфейс перед завершением работы приложения. Переполнение стека - наиболее частое исключение (ой, извините) из этого правила.
Конечно, из-за неуправляемого или небезопасного кода почти наверняка возможно нарушить среду выполнения правильным образом, чтобы вызвать тихий выход.
Предложения по оснащению и просмотру журнала событий Windows тоже хороши.
Похоже, что скорее всего виновата тихая авария. Спасибо
Приложение еще не вышло в свет, поэтому я достаточно хорошо знаю этих пользователей, чтобы поверить в то, что они не закрывали приложение сами (это происходит слишком часто для удобства забывчивости).