让我们运行任务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。