如何调试在Windows CE 6. net CF 3.5 WinForms应用程序中调用application . e



我正在将。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运行时捕获。

我能做什么?

因为您无法捕获在Application.Exit()发生的异常,这听起来像是您面临着我以前见过的错误。请尝试注释掉设置Font属性的所有行。如果应用程序存在而没有错误消息,则您面临的是仅在WinCE 6.0下影响NetCF 3.5的错误。

听起来像是Dispose或Finalizer在GC清理房屋时出现了问题。检查所有的应用终结器和所有的Dispose重写。如果没有找到它,请查看任何工作线程关闭(阻塞调用中的东西,读取可能无效的句柄等)。

我最近遇到了这个问题,问题是表单没有被处理。因此,我必须做的是在每次加载表单时,将表单实例添加到包含所有打开表单的全局列表中,并在应用程序退出时循环遍历列表并执行表单。分别处理。这一下子解决了我的问题。

最新更新