679 Stimmen

Bewährtes Verfahren zum Aufrufen von ConfigureAwait für den gesamten serverseitigen Code

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;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X