Windows mobile 关于:来自.NET Compact Framework 3.5应用程序的随机本机异常-ES400详细信息

Windows mobile 关于:来自.NET Compact Framework 3.5应用程序的随机本机异常-ES400详细信息,windows-mobile,compact-framework,windows-mobile-6.5,motorola-emdk,Windows Mobile,Compact Framework,Windows Mobile 6.5,Motorola Emdk,遇到了这个问题,并对ES400进行了相同的崩溃转储,但解决方案相当模糊,我需要澄清解决方案细节以及截至2013年1月15日发布的摩托罗拉ES400设备上最新固件更新的影响 总结一下这个问题,一个运行在摩托罗拉ES400上的compact framework 3.5应用程序偶尔会抛出一些不可重现的访问违规行为。我可以发布崩溃转储,它对有用信息的了解相当少,与针对原始问题发现的内容相同,答案似乎与系统状态信息监视和ui更新有关,但不具体 我的问题是,什么系统状态信息/控制操作与这个已知问题相关?如果

遇到了这个问题,并对ES400进行了相同的崩溃转储,但解决方案相当模糊,我需要澄清解决方案细节以及截至2013年1月15日发布的摩托罗拉ES400设备上最新固件更新的影响

总结一下这个问题,一个运行在摩托罗拉ES400上的compact framework 3.5应用程序偶尔会抛出一些不可重现的访问违规行为。我可以发布崩溃转储,它对有用信息的了解相当少,与针对原始问题发现的内容相同,答案似乎与系统状态信息监视和ui更新有关,但不具体

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


向对此作为一个全新问题发布而感到不安的任何人致歉,但我无法对原始问题进行评论,因为我是堆栈溢出新手。

尽管您可以使用try..catch块包装所有有问题的调用,但这将消耗资源和性能。最好避免例外情况。 例如:您需要调用一个webservice:您可以在webservice调用周围放置一个try/catch,但是您也可以事先确保是否可以访问webservice宿主服务器

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

无法捕获某些本机异常。我已经看到了与条形码读取器对象或其他特定于设备的.NET包装器对象结合使用的情况。只有包装器的程序员和他们使用的本机代码/DLL才能修复这些坏对象。例如:itcscan.dll是访问条形码读取器的C dll,DataCollection.cf2.dll是此itcscan.dll的.NET包装。如果itcscan.dll中存在本机异常,则可能会使.NET包装器dll和应用程序崩溃。你自己无法解决这个问题。您必须要求供应商提供新的本机和/或.NET DLL

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

将所有内容放入
try…catch
块,直到您缩小范围。感谢所有人的回复。整个程序都在一个try-catch中,但是没有捕获这个异常,我不相信我可以用这种方式捕获访问冲突异常。更糟糕的是,在运行调试器时,它似乎不会发生(尽管它似乎是以随机间隔发生的,所以可能我还没有幸运)。我希望我前面提到的关于ES400设备的任何知识都能成为我所需要的灵感火花。Josef,你最喜欢的检查主机是否可以访问的方法是什么?Ping?是的,简单的Ping是第一次尝试检查主机。