私は呼びたい3つの機能を持っています - void DoJob1()void DoJob2()とCleanup()。 DoJob()は、DoJob()が成功した場合にのみ実行する必要があります。クリーンアップは常に呼び出されるべきです。C#3 Semi-Dependent Tasksを実行しています
私は、次の使用してこの作業を取得しようとしている:
Task theTask = new Task(() => DoJob1(), CancelTokenSource.Token);
theTask.ContinueWith(currTask => DoJob2(),
TaskContinuationOptions.OnlyOnRanToCompletion |
TaskContinuationOptions.AttachedToParent);
theTask.ContinueWith(currTask => Cleanup());
DoJob2は正しくDoJob1後に実行されますが、クリーンアップは、このように同時に実行されます。私はなぜそれを止めてどちらかが失敗した場合でも常に正しく実行されるようにする簡単な方法は何も見えないのですか?
おかげで - 私はそれをやってみますよ。実際のコードは非同期コードを持っていますが、簡単に記述できるように基本を簡略化しました。 – Boycey