我正在将.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运行时捕获。
我该怎么办?
答案 0 :(得分:2)
听起来像Dispose或Finalizer有一个问题,当GC正在清理房屋时出现问题。检查所有应用程序终结器和所有Dispose覆盖。如果找不到它,请查看任何工作线程关闭(阻塞调用中的内容,读取可能无效的句柄等)。
答案 1 :(得分:2)
因为你无法捕捉Application.Exit()
发生的异常,这听起来像你正面临着我之前见过的错误。请尝试注释掉设置Font属性的所有行。如果应用程序存在而没有错误消息,则您将面临仅在WinCE 6.0上影响NetCF 3.5的错误。有关详细信息,请参阅this link。
答案 2 :(得分:0)
我最近遇到过这个问题,问题是这些表格没有被处理掉。所以我必须要做的是在每个表单加载时我将表单实例添加到包含所有打开的表单的全局列表中,并在应用程序出口处循环遍历列表并在每个表单上执行form.dispose。这立即解决了我的问题。