我正在使用 Task.WaitAny 同时调用 3 种不同的方法(TrySolution1、TrySolution2 和 TrySolution3)。我的要求是找到首先执行哪个方法并中止/取消其他方法的执行,如果第一个方法返回结果。
尝试使用 CancellationTokenSource 在第一个方法执行后取消其他任务,但可以看到其他方法仍在执行。
我的代码片段:
Task<Boolean>[] tasks = new Task<Boolean>[3];
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken ct = cts.Token;
tasks[0] = Task<Boolean>.Factory.StartNew(() => TrySolution1());
tasks[1] = Task<Boolean>.Factory.StartNew(() => TrySolution2());
tasks[2] = Task<Boolean>.Factory.StartNew(() => TrySolution3());
Task.WaitAny(tasks, ct);
cts.Cancel();