Hãy xem xét một đoạn mã như:Có an toàn khi sử dụng ContinueWith như một hoạt động "cuối cùng" không?
private Task<string> Download()
{
var wc = new WebClient();
Task<string> backgroundDownload = wc.DownloadStringTaskAsync(this.Uri);
// Make sure the WebClient is disposed no matter what.
backgroundDownload.ContinueWith((downloadTask) => { wc.Dispose(); });
return backgroundDownload;
}
Tôi có thể chắc chắn rằng các cuộc gọi WebClient.Dispose()
xảy ra và rằng bất kỳ ngoại lệ sản xuất được rethrown cho người gọi, nếu như không có cuộc gọi đến ContinueWith
?
Khách hàng có thể quan sát số ContinueWith
này không? (ví dụ: sau đó sẽ gọi tới số ContinueWith
xóa cuộc gọi Vứt bỏ?)
Bạn đã thử mã của mình chỉ bằng cách thêm một Console.WriteLine hoặc MessageBox.Show in * ContinueWith *? –
Tại sao không chỉ sử dụng đang chờ? – VoteCoffee
Ngoài ra, nếu bạn sử dụng chờ đợi, bạn có thể thực hiện việc sử dụng với wc và tạo một khối try/catch ở bất cứ đâu có ý nghĩa. – VoteCoffee