基本上,它要求一个以 Task 为参数的 sub。这就是 Action(of Task) 对吗?
为什么?
我知道我可以通过普通的 sub 来继续。我从不记得传递了一个需要任务参数的子程序。
基本上,它要求一个以 Task 为参数的 sub。这就是 Action(of Task) 对吗?
为什么?
我知道我可以通过普通的 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);
}
如果太复杂,您可以使用片段并保存示例,然后在需要时插入。
因此,让我们创建一个示例。
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