Почему continueWith использует действие (задачи) в качестве параметра? - PullRequest
0 голосов
/ 14 мая 2019

По сути, он запрашивает подпрограмму с параметром «Задача».Вот что такое Action (of Task), верно?

Почему?

Я знаю, что могу передать обычную подпрограмму в continueWith.Я никогда не помню прохождения саба, который требует параметра задачи.

1 Ответ

1 голос
/ 14 мая 2019

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