如何取消任务的延续?

时间:2012-09-14 15:25:25

标签: c# asynchronous task-parallel-library

我的类有一个使用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方法的调用者是否可以对生成的任务执行某些操作并阻止其继续运行?

1 个答案:

答案 0 :(得分:4)

你可以将CancellationToken传递给ContinueWith的各种重载...这将是取消延续的最惯用的方式,即IMO。

我认为您无法对任务取消延迟。无论如何,我有点希望......

编辑:好的,听起来你正在尝试而不是让这种情况发生。不,你不用担心。除非调用者能以某种方式使任务永远运行而不会完成,被取消或出错,否则将继续运行。