Ich habe eine Situation, in der ich async
eine Methode aufrufe, die eine IDisposable
Instanz zurückgibt . Beispielsweise:
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"));
Nun , bevor async
auf der Bühne war, wenn sie mit einem IDisposable
Arbeitsweise dieser Anruf und Code, der die „Antwort“ Variable verwendet wird, würde in einer using - Anweisung gewickelt werden.
Meine Frage ist, ob dies immer noch der richtige Ansatz ist, wenn das async
Schlüsselwort in die Mischung geworfen wird. Funktioniert die using-Anweisung auch in beiden folgenden Beispielen wie erwartet, obwohl der Code kompiliert wird?
Beispiel 1
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
// Do something with the response
return true;
}
Beispiel 2
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
await this.responseLogger.LogResponseAsync(response);
return true;
}
quelle
using(){...}
Block verwendet wird, oder es ist ein Overkill oder kann in einigen Fällen die Leistung beeinträchtigen? Dientusing(){...}
der gleiche Zweck wieawait
?using
undawait
dienen ganz anderen Zwecken. Beachten Sie, dass C # 8 jetzt auch asynchron entsorgt werden kann. Es lohnt sich zwar, sich des Threading-Problems bewusst zu sein, das meine Antwort hervorhebt, aber das bedeutet definitiv nicht, dass es falsch ist ,using
und zu mischenawait
.