在 C# 中取消另一个任务时运行一个任务

Qua*_*iap 3 c# task-parallel-library async-await cancellationtokensource

我有以下要求:

  • 并行启动Task1,2。
  • 当 2 个任务 1,2 中的 1 个完成时,任务 5 将启动。
  • 仅当任务 5 取消时,任务 4 才会启动。

下面是我的代码,但它不起作用。我是否可以在另一个任务取消时启动一个任务?

Task.WhenAny(runTask1(), runTask2()).ContinueWith((t0) => 
{
    runTask5();
    
    if (runTask5().Status == TaskStatus.Canceled)
    {
        runTask4();
    }
});
Run Code Online (Sandbox Code Playgroud)

Pet*_*ala 7

_ = await Task.WhenAny(runTask1(), runTask2());
try
{
   await runTask5();
}
catch(OperationCancelledException ex)
{
   await runTask4();
}
Run Code Online (Sandbox Code Playgroud)

从 C# 6 开始,您可以await Task进入catch并阻止。finally