Как отладить фатальную ошибку, которая происходит после вызова Application.Exit () в приложении WinNETms .NET CF 3.5 для Windows CE 6? - PullRequest
3 голосов
/ 31 октября 2011

Я портирую приложение .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.

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

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

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

2 голосов
/ 31 октября 2011

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

0 голосов
/ 30 ноября 2013

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

...