0

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

为什么?

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

4

1 回答 1

1

这是根据定义。在大多数情况下,“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);
    }

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

因此,让我们创建一个示例。

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
于 2019-05-14T19:30:39.400 回答