为已经完成的任务创建延续的稳健方法是什么



让我们运行任务mainTask。然后发生了一些事情,我想安排继续。

mainTask.ContinueWith(continuationTask);

但如果mainTask在那一刻完成,这将不起作用<-错误声明
好的,我们可以进行一些检查:

if (mainTask.IsCompleted)
{
continuationTask.Start();
}
else 
{
mainTask.ContinueWith(continuationTask);
}

这也不安全,因为我们可能在检查时未完成任务,而在创建延续之前完成任务
因此出现了如何动态地继续执行任务的问题

我现在看到的唯一解决方案是创建第三个任务:

var waitingTask = new Task ( () => mainTask.Wait());
waitingTask.ContinueWith(continuationTask);
waitingTask.Start();

但我想知道是否存在更优雅的方式。

但如果mainTask在那一刻完成,这将不起作用。

这不是真的。

您需要创建一个独立的repro来寻求帮助。通过这样做,你会发现你的假设是错误的,并且某个地方有一个bug。

最新更新