Mam sytuacji, w której wywołuję async
wywołanie metody, która zwraca i instancji IDisposable
. Na przykład:Czy przy użyciu instrukcji i poczekać na słowa kluczowe odtwarzać ładnie w C#
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"));
Teraz przed async
był na scenie, podczas pracy z instancją IDisposable
, to wywołanie i kod, który wykorzystał zmienną „odpowiedź” byłyby pakowane w użyciu instrukcji.
Moje pytanie brzmi, czy to nadal jest prawidłowe podejście, gdy słowo kluczowe async
jest wrzucane do miksu? Mimo że kod się kompiluje, czy instrukcja using będzie działała zgodnie z oczekiwaniami w obu przykładach poniżej?
Przykład 1
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
// Do something with the response
return true;
}
Przykład 2
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
await this.responseLogger.LogResponseAsync(response);
return true;
}
Dzięki Jon. Podczas gdy większość asynchronicznych rzeczy nadal jest dla mnie voodoo, to całkiem pocieszające jest to, jak często integruje się z innymi funkcjami .net i po prostu działa – swingdoctor