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