サーバー側のコード (つまり、一部ApiController
) があり、関数が非同期であるため、関数が返さTask<SomeObject>
れる場合、呼び出した関数を待機することは常にベスト プラクティスと見なされますConfigureAwait(false)
か?
スレッドコンテキストを元のスレッドコンテキストに戻す必要がないため、パフォーマンスが向上することを読んだことがあります。ただし、ASP.NET Web Api では、要求が 1 つのスレッドで受信され、関数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;
}
}