c#多个task,以下方式取消指定task时报错,怎么取消指定的task?
static void Main(string[] args)
{
var cancellationTokens = new CancellationToken[3];
var tasks = new Task[3];
for (int i = 0; i < 3; i++)
{
var iLocal = i; // 为了在内部匿名函数中使用
var cancellationTokenSource = new CancellationTokenSource();
cancellationTokens[i] = cancellationTokenSource.Token;
tasks[i] = Task.Run(() =>
{
while (!cancellationTokens[iLocal].IsCancellationRequested)
{
Console.WriteLine($"Task {iLocal} is running.");
Thread.Sleep(1000); // 模拟工作
}
Console.WriteLine($"Task {iLocal} was cancelled.");
}, cancellationTokens[iLocal]);
}
// 取消第二个Task,但这里报错!!
cancellationTokens[1].Cancel();
Task.WaitAll(tasks); // 等待所有Task完成
Console.WriteLine("All tasks completed.");
}