Tôi gặp tình huống đang thực hiện async
cuộc gọi đến một phương thức trả về và IDisposable
phiên bản. Ví dụ:
HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com"));
Bây giờ trước đây async
ở hiện trường, khi làm việc với một IDisposable
phiên bản, lệnh gọi và mã sử dụng biến "response" này sẽ được bao bọc trong một câu lệnh using.
Câu hỏi của tôi là liệu đó có còn là cách tiếp cận chính xác khi async
từ khóa được đưa vào hỗn hợp không? Mặc dù mã biên dịch, câu lệnh using vẫn hoạt động như mong đợi trong cả hai ví dụ dưới đây?
ví dụ 1
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
// Do something with the response
return true;
}
Ví dụ 2
using(HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.google.com")))
{
await this.responseLogger.LogResponseAsync(response);
return true;
}