2008-10-14 2 views
3

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

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

Кто-нибудь есть какие-нибудь идеи?

ответ

4

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

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

Рекомендации по инструментарию и просмотр журнала событий Windows тоже хороши.

3

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

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

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

+0

Приложение не находится в «дикой природе», но я знаю этих пользователей достаточно хорошо, чтобы доверять тому, что они сами не закрывали приложение (это бывает слишком часто для удобной забывчивости) – Davy8 2008-10-14 16:10:55

+0

Также приложение не " t создайте новый экземпляр, если уже есть другой процесс, и они смогли снова открыть приложение, поэтому он действительно сработал беззвучно, но в целом это хорошие вещи для проверки. – Davy8 2008-10-14 16:12:21

0

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

Смежные вопросы