Tôi gặp tình huống đang thực hiện asynccuộc gọi đến một phương thức trả về và IDisposablephiê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 IDisposablephiê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 asynctừ 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;
}