我有一个Windows服务应用程序,WinXPe,有时因错误而失败,并显示一个消息框,用户下运行:如何完全捕获所有异常/错误
“的指令‘’ 在“00000000”中所引用的内存。该 内存不能为“read”。按OK 退出程序
如果用户点击“确定”服务正在重新启动。
我试图捕获所有未处理的异常,并在处理程序中注册一个事件处理程序AppDomain.CurrentDomain.UnhandledException
我登录异常详细信息并退出应用程序。 但我上面提到的错误不是从“UnhandledException”处理的。
该应用程序严重多线程,使用System.Threading.Timer和System.Threading.Thread。它使用一些第三方库,其中一个库使用本地互操作,我没有本地库的来源。
我试图用附加的调试器指出错误,但错误不显示;) 应用程序必须在发生错误前几天运行。
我需要一种方法来处理这样的错误。
谢谢
马蒂是正确的,这不是一个托管的异常,所以你平时的调试技术将无法正常工作。你使用P/Invoke来调用任何本地方法吗?您是否使用任何以非托管代码编写的第三方库?我们真的需要更多细节才能解决这个问题。如果您想自己尝试调试问题,则必须启用本地代码调试。 – 2011-05-07 09:20:54
我没有办法修复本地库中的任何东西。我没有消息来源。它是基于PC的PLC“TwinCat”的一个组件。必须有一些办法来处理这个:( – chriszero 2011-05-07 09:30:26
我想[我的选择](http:// stackoverflow。com/questions/5920154/how-to-catch-absolutely-all-exceptions-errors/5920184#5920184)应该可以正常工作** [使用单独的AppDomain](http://msdn.microsoft.com/en-us/库/ system.appdomain.load.aspx)**。对于绝对隔离,请使用[.NET Remoting](http://msdn.microsoft.com/zh-cn/library/kwdt6w2k(v = vs.71).aspx)从单独的进程使用本机库。另一个明显的道路是向[库创建者/维护者]报告一个错误(http://www.beckhoff.com/english/support/default.htm)_ – sehe 2011-05-07 10:01:31