2

実行中のタスクを見てみましょうmainTask。すると何かが起こり、続きを予定したい。

mainTask.ContinueWith(continuationTask);

ただし、その時点で mainTask が完了している場合、これは機能しません。<-
間違ったステートメント わかりました。いくつかのチェックを実行できます。

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

また、チェック時にタスクが完了せず、継続を作成する直前に完了している可能性があるため、これも安全ではありません。
したがって、タスクを動的に継続するにはどうすればよいかという疑問が生じます。

私が今見ている唯一の解決策は、3番目のタスクを作成することです:

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

しかし、もっとエレガントな方法が存在するかどうか知りたいです。

4

1 に答える 1

4

ただし、その時点で mainTask が完了している場合、これは機能しません。

それは真実ではない。

ヘルプを見つけるには、自己完結型の再現を作成する必要があります。そうすることで、あなたの仮定が間違っていて、どこかにバグがあることがわかります。

于 2012-12-05T20:58:41.070 に答える