c# - 如何取消任务的继续?

标签 c# asynchronous task-parallel-library

我的类(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/

相关文章:

c# - ITextSharp - 使用 PdfStamper 产生的 MemoryStream 关​​闭

C# 表单通信

java - 如何使用 okhttp 获取异步调用以将响应返回到主线程?

python - 如何异步迭代范围

c# - 使用 Parallel 创建绑定(bind)项时 CollectionViewSource.SortDescriptions 不起作用

c# - 如何让每个方法等待完成 parallel.Foreach 中的另一个方法?

c# - Y型任务执行

c# - 三元运算符字符串长度错误

c# - 如何正确地对异步套接字连接操作进行单元测试并避免 Thread.Sleep?

c# - 将 MySQL 列与方法中的参数变量进行比较