我想在C#windows商店项目中记录未捕获的异常。
对于在UI线程中执行的代码,我可以使用Windows.UI.Xaml.Application.Current.UnhandledException事件,但是在脚踏池中执行的代码的异常不会触发该事件。
我可以尝试确保所有'RunAsync'调用都被包装以记录未捕获的异常,但是很容易意外地绕过该解决方案。有什么东西已经在API中了吗?
答案 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线程的异常。我还没有意识到有什么东西可以捕获从线程池中传播的异常。