Vb.net 为什么continueWith使用动作(任务)作为参数?

Vb.net 为什么continueWith使用动作(任务)作为参数?,vb.net,continuewith,Vb.net,Continuewith,基本上,它要求一个子任务作为参数。这就是(任务的)行动,对吗 为什么? 我知道我可以通过普通的sub继续。我从来都不记得传递了一个需要任务参数的sub。根据定义是这样的。”“ContinueWith”在大多数情况下应与“先行”任务的结果一起运行。如果您忘记了如何调用“ContinueWith”,Visual Studio“Peek Definition”将帮助您。因此,右键单击“ContinueWith”并选择“Peek Definition”,您将检查签名。基本上,如下面的代码片段所示 pu

基本上,它要求一个子任务作为参数。这就是(任务的)行动,对吗

为什么?


我知道我可以通过普通的sub继续。我从来都不记得传递了一个需要任务参数的sub。

根据定义是这样的。”“ContinueWith”在大多数情况下应与“先行”任务的结果一起运行。如果您忘记了如何调用“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);
    }

您在
任务上调用
ContinueWith
,然后执行继续操作的
操作将收到相同的
任务。这个想法是,它可能需要知道在前一步中发生了什么,以便确定要做什么。
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