小编Pei*_*eit的帖子

是否等待多个任务比第一个例外更多?

今天我的同事和我讨论了如何正确处理C#5.0 async方法中的异常,我们想知道是否同时等待多个任务也会观察到运行时未解包的异常.

请考虑以下代码段:

async Task ExceptionMethodAsync()
{
    await Task.Yield();
    throw new Exception();
}

async Task CallingMethod()
{
    try
    {
        var a = ExceptionMethodAsync();
        var b = ExceptionMethodAsync();

        await Task.WhenAll(a, b);
    }
    catch(Exception ex)
    {
        // Catches the "first" exception thrown (whatever "first" means)

    }
}
Run Code Online (Sandbox Code Playgroud)

现在第二项任务会发生什么?两者都将处于故障状态,但是现在观察到还是未观察到的第二个任务异常?

c# asynchronous exception-handling async-await

16
推荐指数
1
解决办法
5780
查看次数