2

让我们有正在运行的任务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();

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

4

1 回答 1

4

但是如果此时 mainTask 完成,这将不起作用。

这不是真的。

You need to create a self-contained repro to find help. By doing that you'll find out that your assumption is false and that there is a bug somewhere.

于 2012-12-05T20:58:41.070 回答