处理在Windows商店项目中传播出线程池的意外异常

时间:2012-09-27 19:53:46

标签: c# .net exception-handling windows-runtime windows-store-apps

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

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

我可以尝试确保所有'RunAsync'调用都被包装以记录未捕获的异常,但是很容易意外地绕过该解决方案。有什么东西已经在API中了吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

System.Threading.Tasks.TaskScheduler.UnobservedTaskException +=new EventHandler<UnobservedTaskExceptionEventArgs>(...);

答案 2 :(得分:0)

此时我有两个意外的异常处理程序:

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

我还没有意识到有什么东西可以捕获从线程池中传播的异常。