Когда у вас есть код на стороне сервера (т.е. некоторая 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 SomeAsyncFunctionThatGetsCustomer(id).ConfigureAwait(false);
// now you are on a different thread! will that cause problems?
return customer;
}
}