我有一个使用 Nlog 记录致命异常的 .Net Compact Framework 3.5 应用程序。大多数情况下,日志记录按预期工作,并在崩溃之前记录致命异常。但有时它观察到应用程序崩溃而没有留下任何错误/异常的迹象。让我详细说明一下场景 -
应用程序创建的线程很少,所有线程(正常、线程池、APM、计时器)都在其调用堆栈的开头添加了 try-catch 块。因此在崩溃之前记录致命异常。
主线程有“AppDomain.CurrentDomain.UnhandledException”来记录其调用堆栈上的任何致命异常。
该应用程序确实加载了一些第三方托管的 dll 并在 Wnce dll 上执行了一些 PInvoke。但我相信即使某些第三方 dll 崩溃(或者说它创建了一个崩溃的新线程),我至少应该在日志中看到一些 ThreadAbortExceptions,在退出之前由我的应用程序的线程记录。
该行为是零星的,有时会在启动应用程序后的一段时间内发生。
代码中没有 Application.DoEvents。
这种崩溃的所有可能原因是什么?为什么日志中绝对没有例外?
任何帮助将不胜感激。