关于:.NET Compact Framework 3.5应用程序的随机本机异常 - ES400细节

时间:2013-03-07 23:05:21

标签: windows-mobile compact-framework windows-mobile-6.5 motorola-emdk

遇到了问题Random native exception from .NET Compact Framework 3.5 application并且为ES400提供了相同的故障转储,但解决方案相当模糊,我需要澄清有关解决方案的详细信息以及最新固件更新对Motorola ES400设备的影响。 2013年1月15日。

总结一下这个问题,在摩托罗拉ES400上运行的紧凑框架3.5应用程序偶尔会以奇怪的间隔抛出不可重现的访问冲突。我可以发布崩溃转储,这对于有用的信息非常清楚,并且与原始问题相同,其答案似乎与系统状态信息监控和ui更新有关,但是相当不明确。

我的问题是,什么系统状态信息/控制操作与此已知问题相关?如果安装了截至2013年1月15日的最新固件版本,它对解决方案有什么影响吗?

向任何对此感到不满的人道歉是作为一个全新的问题发布的,但我不能对原文发表评论,因为我是新的堆栈溢出。

1 个答案:

答案 0 :(得分:0)

虽然您可以使用try..catch块包装所有有问题的调用,但这会耗费资源和性能。避免异常总是更好。 例如:你需要调用一个webservice:你可以在webservice调用周围放一个try / catch,但是如果可以访问webservice托管服务器,你也可以确保之前。

作为第一次尝试,您可能只在try.c(Exception ex)..catch中的program.cs中包装主窗体调用。未处理的异常将以树的方式处理,并从上到下起泡直到它们被处理(对不起我的英语)。 使用从Exception类中可以获得的所有信息:Message,StackTrace,InnerException等... 可能会将这些信息写入文件,以便稍后查看。

无法捕获某些原生例外。我已经看到这样与条形码阅读器对象或其他特定于设备的.NET包装器对象一起使用。这些坏对象的唯一修复可以由包装器的程序员和他们使用的本机代码/ DLL来完成。例如:itcscan.dll是一个访问条形码阅读器的C DLL,DataCollection.cf2.DLL是这个itcscan.dll的.NET包装器。如果itcscan.dll中存在本机异常,则可能导致.NET包装器DLL和应用程序崩溃。你自己无法解决这个问题。您必须向供应商询问新的本机和/或.NET DLL。

如何查找本机异常的来源?

只需通过您的代码并考虑禁用其中一个或其他呼叫和测试。 对文件进行良好的记录,记录所有函数调用和结果。可能您在日志中找到了抛出本机异常的模式。 重新考虑如何实现功能。正如在你提到的帖子中,作者将他的代码从事件驱动的图标状态更新更改为基于时间的定期检查。