Lớp học của tôi có phương pháp tạo đối tượng Task<int>
bằng cách sử dụng TaskCompletionSource<int>
. Sau đó, nó thực hiện một số hoạt động không đồng bộ và đặt kết quả. Tôi cần phải biết liệu tôi có thể tin tưởng ContinueWith
phương pháp của nhiệm vụ hay không:Làm thế nào để hủy bỏ một sự tiếp tục của công việc?
public Task<int> CalculateAsync()
{
var source = new TaskCompletionSource();
DoSomeAsyncStuffAndSetResultOf(source);
source.Task.ContinueWith(t => Console.WriteLine("Is this reliable?"));
return source.Task;
}
người gọi của CalculateAsync
phương pháp có thể làm điều gì đó với nhiệm vụ sản xuất và ngăn chặn sự tiếp nối của nó chạy?
Ồ, tôi hiểu - không, sự tiếp tục sẽ luôn chạy (giả sử người gọi không thể bắt buộc nhiệm vụ đơn giản chạy mãi mãi, không bao giờ hoàn thành). –
Đã xóa nhận xét sau khi tôi thấy chỉnh sửa của bạn. Nếu anh ta gọi Dispose trước khi tôi đặt kết quả của nhiệm vụ thì sao? –
@ ŞafakGür: Theo tài liệu cho Task.Dispose, điều đó sẽ ném một InvalidOperationException. –