如何处理此Metro应用程序的异步异常?

时间:2012-09-12 17:37:42

标签: .net asynchronous exception-handling microsoft-metro async-await

我遇到了一些异常代码的异常问题。

时我不想阻止我的线程
private async Task ThrowSomeExceptionAsync()
{
    //Some long running process would go here...

    throw new Exception();
}

这是我想要调用的方法,并捕获异常。我正在使用Application.UnhandledException事件来捕获我的异常,但在这种情况下它并没有被捕获。

我尝试在要填充的返回的Task对象上等待Exception属性,但在任务完成时会阻塞。

使用ContinueWith方法阻止了阻塞,但是UndhandledException事件没有捕获从委托中抛出的任何异常。

如何以异步方式执行此代码,但仍使用我的UnhandledException事件进行错误处理?我错过了关于那个事件的一些基本概念吗?

1 个答案:

答案 0 :(得分:1)

未将异常发送到UnhandledException事件的原因是该事件仅涵盖XAML框架中引发的异常。抛出异常的委托存在于XAML框架之外,并且不会传递它以便可以引发事件。解决方案似乎是一个静态类的形式,它将处理异常,并从委托和UnhandledException事件中调用它。