我应该将async/await添加到单行功能吗?

Hor*_*ux7 10 c# asynchronous async-await

我应该将async/await添加到单行函数,如:

public async Task<T> GetFoo()
{
    return await HandleAsync<T>(....);
}
Run Code Online (Sandbox Code Playgroud)

或者如果参数不需要异步调用,这是不必要的开销,我可以简单地写:

public Task<T> GetFoo()
{
    return HandleAsync<T>(....);
}
Run Code Online (Sandbox Code Playgroud)

M.k*_*ary 6

使用第二个重载,因为异步方法在幕后(一个额外的类)被转换为astate机器来处理等待的异步操作.

因此,第一种方法会增加不必要 第二次重载只会返回一个你仍然可以等待的任务.

我不确定异常处理如何在这里改变,但我认为它没有改变.

  • 值得注意的是,`await`方法也可能导致不必要的线程上下文切换(读取"可能的性能损失"),因为没有使用`ConfigureAwait(false)`. (5认同)
  • 正如上面提到的@Ipsut - 值得注意的是OP的要求.他是否需要"HandleAsync"的结果.值得注意的是调用该方法的更大背景.是用其他`async`调用解雇还是这个调用是隔离的.如果所有线程都非常繁忙,则上下文切换只会成为问题. (2认同)