0

我想在 C# windows store 项目中记录未捕获的异常。

对于在 UI 线程中执行的代码,我可以使用 Windows.UI.Xaml.Application.Current.UnhandledException 事件,但是在线程池中执行的代码的异常不会触发该事件。

我可以尝试确保包装所有“RunAsync”调用以记录未捕获的异常,但很容易意外绕过该解决方案。API 中是否有针对此的内容?

4

3 回答 3

1

我不确定是否有可用的东西,但是您可以创建自己的 RunAsync 版本,它需要执行一个操作并将其包装在 try/catch 块中,然后再使用 RunAsync 的平台版本执行它,然后继续制作确保这是您在后台运行的唯一方法。

除此之外 - 启用所有异常的中断进行调试(Alt+Ctrl+E,检查所有)应该可以帮助您找到问题区域。

于 2012-09-28T06:34:48.830 回答
1

您如何安排代码作为 Threadpoolthread 运行?如果您使用的是任务,请检查 TaskScheduler 上的 UnobservedException 事件

System.Threading.Tasks.TaskScheduler.UnobservedTaskException +=new EventHandler<UnobservedTaskExceptionEventArgs>(...);
于 2012-09-28T06:40:18.940 回答
0

目前我知道有两个意外的异常处理程序:

  • System.Threading.Tasks.TaskScheduler.UnobservedTaskException对于存储在任务中的异常,这些异常在任务被垃圾收集之前未被访问。
  • Application.Current.UnhandledException对于从 UI 线程传播的异常。

我还不知道有什么可以捕获从线程池传播出来的异常。

于 2012-10-20T14:05:01.230 回答