为什么 continueWith 使用 action(of task) 作为参数?

Why does continueWith uses action(of task) as a parameter?

基本上,它要求一个以 Task 作为参数的 sub。这就是 Action(of Task) 对吗?

为什么?

我知道我可以将普通的 sub 传递给 continueWith。我从来不记得传递了一个需要任务参数的子程序。

根据定义。 'ContinueWith' 在大多数情况下应该使用 'antecedent' 任务的结果。如果你忘记了如何调用'ContinueWith',Visual Studio'Peek Definition'会帮助你。因此,右键单击 'ContinueWith' 并选择 'Peek Definition',您将检查签名。基本上,它看起来像下面的代码片段所示。

 public Task<TNewResult> ContinueWith<TNewResult>(
      Func<Task<TResult>, TNewResult> continuationFunction)
    {
      StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
      return this.ContinueWith<TNewResult>(continuationFunction, TaskScheduler.Current, new CancellationToken(), TaskContinuationOptions.None, ref stackMark);
    }

如果太复杂,您可以使用片段并保存示例,然后在需要时插入。

那么,让我们创建一个示例。

Module Module1

    Sub Main()
        Dim taskA As Task(Of DayOfWeek) = Task.Run(Function() DateTime.Today.DayOfWeek )

        ' Execute the continuation when the antecedent finishes.
        Dim taskB As Task(Of string) = taskA.ContinueWith(Function (antecedent)
            Return $"Today is {antecedent.Result}"
        End Function)


        taskb.Wait()
        Console.WriteLine(taskB.Result)



        Console.ReadLine()
    End Sub

End Module