让我们有正在运行的任务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();
但我想知道是否存在更优雅的方式。