gpt4 book ai didi

c# - 如何中止/取消 TPL 任务?

转载 作者:IT王子 更新时间:2023-10-29 03:31:58 26 4
gpt4 key购买 nike

在一个线程中,我创建一些 System.Threading.Task 并启动每个任务。

当我执行 .Abort() 来终止线程时,任务不会中止。

如何将 .Abort() 传输到我的任务?

最佳答案

你不能。任务使用线程池中的后台线程。也不推荐使用 Abort 方法取消线程。你可以看看 following blog post这解释了使用取消 token 取消任务的正确方法。这是一个例子:

class Program
{
static void Main()
{
var ts = new CancellationTokenSource();
CancellationToken ct = ts.Token;
Task.Factory.StartNew(() =>
{
while (true)
{
// do some heavy work here
Thread.Sleep(100);
if (ct.IsCancellationRequested)
{
// another thread decided to cancel
Console.WriteLine("task canceled");
break;
}
}
}, ct);

// Simulate waiting 3s for the task to complete
Thread.Sleep(3000);

// Can't wait anymore => cancel this task
ts.Cancel();
Console.ReadLine();
}
}

关于c# - 如何中止/取消 TPL 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com