Mam sytuację, w której wykonuję asyncwywołanie metody, która zwraca i IDisposablewystąpienie. Na przykład:
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"));
Wcześniej asyncbyło na scenie podczas pracy z IDisposableinstancją, to wywołanie i kod używający zmiennej „response” byłyby opakowane w instrukcję using.
Moje pytanie brzmi, czy nadal jest to właściwe podejście, gdy asyncsłowo kluczowe jest wrzucane do miksu? Nawet jeśli kod jest kompilowany, czy instrukcja using nadal będzie działać zgodnie z oczekiwaniami w obu poniższych przykładach?
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;
}