【问题标题】:How do I handle this Metro app's async exception?如何处理这个 Metro 应用程序的异步异常?
【发布时间】:2012-09-05 18:59:29
【问题描述】:

我遇到了一些从一些异步代码中得到的异常的问题。我不想阻塞我的线程,而

private async Task ThrowSomeExceptionAsync()
{
    //Some long running process would go here...

    throw new Exception();
}

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

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

使用 ContinueWith 方法可以防止阻塞,但是从委托中抛出的任何异常都不会被 UndhandledException 事件捕获。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多