Это по определению.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