Wenn Sie serverseitigen Code haben (d.h. einige ApiController
) und Ihre Funktionen sind asynchron - sie geben also zurück Task<SomeObject>
- gilt es als bewährte Praxis, dass Sie jedes Mal, wenn Sie Funktionen abwarten, die Sie aufrufen ConfigureAwait(false)
?
Ich hatte gelesen, dass es leistungsfähiger ist, da es den Thread-Kontext nicht zurück zum ursprünglichen Thread-Kontext wechseln muss. Mit ASP.NET Web Api jedoch, wenn Ihre Anfrage in einem Thread eingeht und Sie eine Funktion abwarten und ConfigureAwait(false)
die Sie möglicherweise in einen anderen Thread bringen könnte, wenn Sie das Endergebnis Ihrer ApiController
Funktion.
Im Folgenden habe ich ein Beispiel für das, was ich meine, abgetippt:
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;
}
}