当您有服务器端代码(即一些ApiController
)并且您的函数是异步的 - 所以它们返回时Task<SomeObject>
- 任何时候等待调用的函数是否被认为是最佳实践ConfigureAwait(false)
?
我读过它的性能更高,因为它不必将线程上下文切换回原始线程上下文。但是,使用 ASP.NET Web Api,如果您的请求来自一个线程,并且您等待某个函数和调用ConfigureAwait(false)
,当您返回ApiController
函数的最终结果时,可能会将您置于不同的线程。
我在下面输入了一个我正在谈论的示例:
public class CustomerController : ApiController
{
public async Task<Customer> Get(int id)
{
// you are on a particular thread here
var customer = await GetCustomerAsync(id).ConfigureAwait(false);
// now you are on a different thread! will that cause problems?
return customer;
}
}