【发布时间】:2012-11-09 10:57:19
【问题描述】:
当您有服务器端代码(即一些 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;
}
}
【问题讨论】:
标签: c# asp.net-web-api task-parallel-library async-await