【发布时间】:2019-10-18 18:27:52
【问题描述】:
如果我的CancellationToken 没有被解雇,我想链接一些任务,但有条件地继续执行。
我想要达到的目标相当于
var cts = new CancellationTokenSource();
var cancellationToken = cts.Token;
var t = Task.Run(async () => {
if (cancellationToken.IsCancellationRequested) return;
await t1();
if (cancellationToken.IsCancellationRequested) return;
await t2();
if (cancellationToken.IsCancellationRequested) return;
await t3();
if (cancellationToken.IsCancellationRequested) return;
await t4();
});
var timeout = Task.Delay(TimeSpan.FromSeconds(4));
var completedTask = await Task.WhenAny(t, timeout);
if (completedTask != t)
{
cts.Cancel();
await t;
}
这就是我现在所拥有的,它正在工作,虽然它也很冗长。
【问题讨论】:
标签: c# asynchronous task