呼叫链以异步/等待..等待等待的等待或返回等待的



给定异步方法:

public async Task<int> InnerAsync()
{
    await Task.Delay(1000);
    return 123;
}

并通过中间方法调用它,中间方法是否应该等待异步方法IntermediateA或仅返回任务IntermediateB

public async Task<int> IntermediateA()
{
    return await InnerAsync();
}
private Task<int> IntermediateB()
{
    return InnerAsync();
}

我可以通过调试器说出最好的说法,这两者似乎都完全一样,但是在我看来,中速应该通过避免在状态机器中再加入一个等待进入。

是吗?

这两种方法存在细微的差异。如果您的await失败任务失败,则例外将以该方法抛出,但是如果您通过任务认为该方法,然后await它,则将以消费者的方式抛出例外。如果消费者在等待任务,并且如果延迟发生,则另一个区别更为罕见,该任务可以在等待点完成并绕过状态机。

最新更新