Как отладить фатальную ошибку, которая возникает после вызова приложения .Exit() в приложении .NET CF 3.5 WinForms для Windows CE 6?

82
11

Я переношу приложение .NET CF 1.0 WinForms (для более старых версий Windows CE) в .NET CF 3.5 (для Windows CE 6). Проблема заключается в том, что через несколько секунд после вызова Application.Exit() я получаю сообщение об ошибке "фатальная ошибка", которое просто говорит что-то о влиянии "Произошла фатальная ошибка, и приложение завершится.". Поскольку я использую китайскую версию Windows CE, сообщение находится на китайском языке, и я не уверен, что точное сообщение на английском языке. В любом случае сообщение об ошибке автоматически исчезает, и приложение не может полностью завершить работу и освободить ресурсы, так что вся операционная система становится непригодной (запуск любого приложения приведет к вечной анимации песочных часов, стыковка устройства в его подставке также не вызывает ActiveSync для подключения) до тех пор, пока я не смогу загрузить устройство.


Эта фатальная ошибка, по-видимому, никогда не происходила в ее исходной форме (.NET CF 1.0) на более старом устройстве.


И поскольку это не исключение .NET, оно не попадает в среду выполнения .NET.


Что я могу сделать?

спросил(а) 2011-10-31T05:16:00+04:00 8 лет, 11 месяцев назад
1
Решение
70

Поскольку вы не можете поймать исключение, которое происходит в Application.Exit(), это звучит так, будто вы столкнулись с ошибкой, которую я видел раньше. Попробуйте прокомментировать все строки, где вы устанавливаете атрибут Font. Если приложение существует без сообщения об ошибке, вы сталкиваетесь с ошибкой, которая влияет только на NetCF 3.5 только на WinCE 6.0. Подробнее см. эту ссылку.

ответил(а) 2012-03-09T15:57:00+04:00 8 лет, 7 месяцев назад
71

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

ответил(а) 2011-10-31T06:26:00+04:00 8 лет, 11 месяцев назад
42

Недавно я столкнулся с этой проблемой, и проблема заключалась в том, что формы не были удалены. Так что я должен был сделать на каждой загрузке формы, я добавил экземпляр формы в глобальный список, который содержал все открытые формы, а при выходе из программы я прокрутил список и сделал form.dispose на каждом. Это решило мою проблему мгновенно.

ответил(а) 2013-11-30T17:22:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема