返回等待fooAsync()或在方法内返回fooAsync()

时间:2014-03-27 02:22:02

标签: c# asynchronous async-await

假设我有一个名为fooAsync()的方法:

public Task<T> FooAsync<T>(T foo, T bar)
{
    // do some stuff
    var returnFoo = await netLibraryMethodAsync(x, y, z);
    // do some more stuff
    return returnFoo as T;
}

现在我有一个awaiter方法只能做一件事call fooAsync()

public Task<string> BarAsync(string foo, string bar)
{
    return this.FooAsync(foo, bar);
}

我的问题是:在BarAsync中,我应该使用return await this.FooAsync()还是return this.FooAsync()?为什么?

我试过环顾四周,但没有找到这个模式的确凿答案。

1 个答案:

答案 0 :(得分:2)

  

我的问题是:在BarAsync里面,我应该使用return await this.FooAsync()或者返回this.FooAsync()以及为什么?

您应该使用return FooAsync(foo, bar)。在这种情况下,除了调用另一个异步方法之外,您没有做任何事情,因此通过避免asyncawait,您可以避免少量开销。