5

我的类有一个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对生成的任务做一些事情并阻止其继续运行吗?

4

1 回答 1

4

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

我认为您无法对任务执行任何操作来取消继续。我有点希望不会,反正...

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

于 2012-09-14T15:27:36.733 回答