我的类(class)有一个产生 Task<int>
的方法使用 TaskCompletionSource<int>
的对象.然后它做一些异步操作并设置结果。我需要知道我是否可以信任任务的 ContinueWith
方法与否:
public Task<int> CalculateAsync()
{
var source = new TaskCompletionSource();
DoSomeAsyncStuffAndSetResultOf(source);
source.Task.ContinueWith(t => Console.WriteLine("Is this reliable?"));
return source.Task;
}
CalculateAsync
的来电者可以吗?方法对生成的任务做些什么并阻止其继续运行?
最佳答案
您可以将 CancellationToken
传递到 ContinueWith
的各种重载中...这将是取消延续的最惯用的方式,IMO。
我认为您无法对父 任务执行任何操作来取消延续。无论如何,我希望不会...
编辑:好的,听起来您正在尝试不让这种情况发生。不,你不必担心。除非调用者能够以某种方式使任务永远运行而不会完成、被取消或出错,否则延续将运行。
关于c# - 如何取消任务的继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427537/