Task<TResult>.ContinueWith Método

Definição

Cria uma tarefa de continuação que é executada quando outra tarefa é concluída.

Sobrecargas

Name Description
ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>>, TaskContinuationOptions)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

ContinueWith(Action<Task<TResult>>, CancellationToken)

Cria uma continuação cancelável que é executada de forma assíncrona quando o destino Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>,Object>, Object)

Cria uma continuação que recebe a informação de estado passada e que é executada quando o destino Task<TResult> é concluído.

ContinueWith(Action<Task<TResult>>)

Cria uma continuação que é executada de forma assíncrona quando a tarefa alvo é concluída.

ContinueWith(Action<Task<TResult>>, TaskScheduler)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task

Parâmetros

continuationAction
Action<Task<TResult>,Object>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela ação de continuação.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Uma nova continuação Task.

Exceções

O scheduler argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

O fornecido CancellationToken já foi descartado.

Observações

Os devolvidos Task não serão agendados para execução até que a tarefa atual esteja concluída. Se os critérios especificados através do continuationOptions parâmetro não forem cumpridos, a tarefa de continuação será cancelada em vez de agendada.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task

Parâmetros

continuationAction
Action<Task<TResult>>

Uma ação para executar segundo a condição especificada em continuationOptions. Quando executado, o delegado recebe a tarefa concluída como argumento.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Uma nova continuação Task.

Exceções

O Task<TResult> foi descartado.

-ou-

O CancellationTokenSource que foi criado cancellationToken já foi eliminado.

O continuationAction argumento é null.

-ou-

O scheduler argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

Os devolvidos Task não serão agendados para execução até que a tarefa atual esteja concluída. Se os critérios especificados através do continuationOptions parâmetro não forem cumpridos, a tarefa de continuação será cancelada em vez de agendada. Para obter mais informações, consulte encadeamento de tarefas usando tarefas de continuação.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, scheduler As TaskScheduler) As Task

Parâmetros

continuationAction
Action<Task<TResult>,Object>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela ação de continuação.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Uma nova continuação Task.

Exceções

O scheduler argumento é null.

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, cancellationToken As CancellationToken) As Task

Parâmetros

continuationAction
Action<Task<TResult>,Object>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela ação de continuação.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa de continuação.

Devoluções

Uma nova continuação Task.

Exceções

O continuationAction argumento é null.

O fornecido CancellationToken já foi descartado.

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object, continuationOptions As TaskContinuationOptions) As Task

Parâmetros

continuationAction
Action<Task<TResult>,Object>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela ação de continuação.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

Devoluções

Uma nova continuação Task.

Exceções

O continuationAction argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

Os devolvidos Task não serão agendados para execução até que a tarefa atual esteja concluída. Se os critérios de continuação especificados através do continuationOptions parâmetro não forem cumpridos, a tarefa de continuação será cancelada em vez de agendada.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>>, TaskContinuationOptions)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), continuationOptions As TaskContinuationOptions) As Task

Parâmetros

continuationAction
Action<Task<TResult>>

Uma ação de acordo com a condição especificada em continuationOptions. Quando executado, o delegado recebe a tarefa concluída como argumento.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

Devoluções

Uma nova continuação Task.

Exceções

O continuationAction argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

Os devolvidos Task não serão agendados para execução até que a tarefa atual esteja concluída. Se os critérios de continuação especificados através do continuationOptions parâmetro não forem cumpridos, a tarefa de continuação será cancelada em vez de agendada.

Para obter mais informações, consulte encadeamento de tarefas usando tarefas de continuação.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>>, CancellationToken)

Cria uma continuação cancelável que é executada de forma assíncrona quando o destino Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), cancellationToken As CancellationToken) As Task

Parâmetros

continuationAction
Action<Task<TResult>>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída como argumento.

cancellationToken
CancellationToken

O token de cancelamento que é passado para a nova tarefa de continuação.

Devoluções

Uma nova tarefa de continuação.

Exceções

O Task<TResult> foi descartado.

-ou-

O CancellationTokenSource que foi criado cancellationToken foi eliminado.

O continuationAction argumento é null.

Exemplos

O exemplo seguinte cria uma tarefa antecedente que utiliza a Peneira de Eratóstenes para calcular os números primos entre 1 e um valor introduzido pelo utilizador. Um array é usado para armazenar informação sobre os números primos. O índice do array representa o número, e o valor do elemento indica se esse número é composto (o seu valor é true) ou primo (o seu valor é false). Esta tarefa é então passada para uma tarefa de continuação, que é responsável por extrair os números primos do array inteiro e exibi-los.

Um token de cancelamento é passado tanto para a tarefa antecedente como para a tarefa de continuação. Um System.Timers.Timer objeto é usado para definir um valor de timeout de 100 milissegundos. Se o evento for ativado, o CancellationTokenSource.Cancel método é chamado e o token de cancelamento é usado para solicitar o cancelamento das tarefas.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Timers = System.Timers;

public class Example
{
   static CancellationTokenSource ts;
   
   public static void Main(string[] args)
   {
      int upperBound = args.Length >= 1 ? Int32.Parse(args[0]) : 200;
      ts = new CancellationTokenSource();
      CancellationToken token = ts.Token;
      Timers.Timer timer = new Timers.Timer(3000);
      timer.Elapsed += TimedOutEvent;
      timer.AutoReset = false;
      timer.Enabled = true;

      var t1 = Task.Run(() => { // True = composite.
                                // False = prime.
                                bool[] values = new bool[upperBound + 1];
                                for (int ctr = 2; ctr <= (int) Math.Sqrt(upperBound); ctr++) {
                                   if (!values[ctr] ) {
                                      for (int product = ctr * ctr; product <= upperBound;
                                                                    product = product + ctr)
                                         values[product] = true;
                                   }
                                   token.ThrowIfCancellationRequested();
                                }
                                return values; }, token);

      var t2 = t1.ContinueWith( (antecedent) => { // Create a list of prime numbers.
                                                  var  primes = new List<int>();
                                                  token.ThrowIfCancellationRequested();
                                                  bool[] numbers = antecedent.Result;
                                                  string output = String.Empty;

                                                  for (int ctr = 1; ctr <= numbers.GetUpperBound(0); ctr++)
                                                     if (!numbers[ctr] )
                                                        primes.Add(ctr);

                                                  // Create the output string.
                                                  for (int ctr = 0; ctr < primes.Count; ctr++) {
                                                     token.ThrowIfCancellationRequested();
                                                     output += primes[ctr].ToString("N0");
                                                     if (ctr < primes.Count - 1)
                                                        output += ",  ";
                                                     if ((ctr + 1) % 8 == 0)
                                                        output += Environment.NewLine;
                                                  }
                                                  //Display the result.
                                                  Console.WriteLine("Prime numbers from 1 to {0}:\n",
                                                                    upperBound);
                                                  Console.WriteLine(output);
                                                }, token);
      try {
         t2.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions) {
            if (e.GetType() == typeof(TaskCanceledException))
               Console.WriteLine("The operation was cancelled.");
            else
               Console.WriteLine("ELSE: {0}: {1}", e.GetType().Name, e.Message);
         }
      }
      finally {
         ts.Dispose();
      }
   }

   private static void TimedOutEvent(Object source, Timers.ElapsedEventArgs e)
   {
      ts.Cancel();
   }
}
// If cancellation is not requested, the example displays output like the following:
//       Prime numbers from 1 to 400:
//
//       1,  2,  3,  5,  7,  11,  13,  17,
//       19,  23,  29,  31,  37,  41,  43,  47,
//       53,  59,  61,  67,  71,  73,  79,  83,
//       89,  97,  101,  103,  107,  109,  113,  127,
//       131,  137,  139,  149,  151,  157,  163,  167,
//       173,  179,  181,  191,  193,  197,  199,  211,
//       223,  227,  229,  233,  239,  241,  251,  257,
//       263,  269,  271,  277,  281,  283,  293,  307,
//       311,  313,  317,  331,  337,  347,  349,  353,
//       359,  367,  373,  379,  383,  389,  397,  401
// If cancellation is requested, the example displays output like the following:
//       The operation was cancelled.
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks
Imports Timers = System.Timers

Module Example
   Dim ts As CancellationTokenSource

   Public Sub Main(args() As String)
      Dim upperBound As Integer = If(args.Length >= 1, CInt(args(0)), 200)
      ts = New CancellationTokenSource()
      Dim token As CancellationToken = ts.Token
      Dim timer As New Timers.Timer(100)
      AddHandler timer.Elapsed, AddressOf TimedOutEvent
      timer.AutoReset = False
      timer.Enabled = True

      Dim t1 = Task.Run(Function()
                          ' True = composite.
                          ' False = prime.
                          Dim values(upperBound) As Boolean
                          For ctr = 2 To CInt(Math.Sqrt(upperBound))
                             If values(ctr) = False Then
                                For product = ctr * ctr To upperBound Step ctr
                                   values(product) = True
                                Next
                             End If
                             token.ThrowIfCancellationRequested()
                          Next
                          Return values
                       End Function, token)

      Dim t2 = t1.ContinueWith(Sub(antecedent)
                                  ' Create a list of prime numbers.
                                  Dim primes As New List(Of Integer)()
                                  token.ThrowIfCancellationRequested()
                                  Dim numbers As Boolean() = antecedent.Result
                                  Dim output As String = String.Empty
                                  
                                  For ctr As Integer = 1 To numbers.GetUpperBound(0)
                                     If numbers(ctr) = False Then primes.Add(ctr)
                                  Next

                                  ' Create the output string.
                                  For ctr As Integer = 0 To primes.Count - 1
                                     token.ThrowIfCancellationRequested()
                                     output += primes(ctr).ToString("N0")
                                     If ctr < primes.Count - 1 Then output += ",  "
                                     If (ctr + 1) Mod 8 = 0 Then output += vbCrLf
                                  Next
                                  'Display the result.
                                  Console.WriteLine("Prime numbers from 1 to {0}:{1}",
                                                    upperBound, vbCrLf)
                                  Console.WriteLine(output)
                               End Sub, token)
      Try
         t2.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            If e.GetType Is GetType(TaskCanceledException) Then
               Console.WriteLine("The operation was cancelled.")
            Else
               Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
            End If
         Next
      Finally
         ts.Dispose()
      End Try
   End Sub
   
   Private Sub TimedOutEvent(source As Object, e As Timers.ElapsedEventArgs)
      ts.Cancel()
   End Sub
End Module
' If cancellation is not requested, the example displays output like the following:
'       Prime numbers from 1 to 400:
'
'       1,  2,  3,  5,  7,  11,  13,  17,
'       19,  23,  29,  31,  37,  41,  43,  47,
'       53,  59,  61,  67,  71,  73,  79,  83,
'       89,  97,  101,  103,  107,  109,  113,  127,
'       131,  137,  139,  149,  151,  157,  163,  167,
'       173,  179,  181,  191,  193,  197,  199,  211,
'       223,  227,  229,  233,  239,  241,  251,  257,
'       263,  269,  271,  277,  281,  283,  293,  307,
'       311,  313,  317,  331,  337,  347,  349,  353,
'       359,  367,  373,  379,  383,  389,  397,  401
' If cancellation is requested, the example displays output like the following:
'       The operation was cancelled.

Normalmente, fornecer um valor de cerca de 100.000 faz com que o intervalo de tempo expire, o Timer.Elapsed evento seja ativado e o pedido de cancelamento seja definido.

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>,Object>, Object)

Cria uma continuação que recebe a informação de estado passada e que é executada quando o destino Task<TResult> é concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^, System::Object ^> ^ continuationAction, System::Object ^ state);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>,object> continuationAction, object state);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>, obj> * obj -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult), Object), state As Object) As Task

Parâmetros

continuationAction
Action<Task<TResult>,Object>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela ação de continuação.

Devoluções

Uma nova continuação Task.

Exceções

O continuationAction argumento é null.

Exemplos

O exemplo seguinte cria uma tarefa que recebe um número inteiro entre 2 e 20 e devolve um array que contém os primeiros dez expoentes (de n1 an 10) desse número. Uma tarefa de continuação é então responsável por exibir os expoentes. Passa-se tanto o antecedente como o número original cujos expoentes o antecedente gera.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var cts = new CancellationTokenSource();
      var token = cts.Token;

      // Get an integer to generate a list of its exponents.
      var rnd = new Random();
      var number = rnd.Next(2, 21);
      
      var t = Task.Factory.StartNew( (value) => { int n = (int) value;
                                                  long[] values = new long[10];
                                                  for (int ctr = 1; ctr <= 10; ctr++)
                                                     values[ctr - 1] = (long) Math.Pow(n, ctr);
                                                     
                                                  return values;
                                                }, number);
      var continuation = t.ContinueWith( (antecedent, value) => { Console.WriteLine("Exponents of {0}:", value);
                                                                  for (int ctr = 0; ctr <= 9; ctr++)
                                                                     Console.WriteLine("   {0} {1} {2} = {3:N0}",
                                                                                       value, "\u02C6", ctr + 1,
                                                                                       antecedent.Result[ctr]);
                                                                  Console.WriteLine();
                                                                }, number);
      continuation.Wait();
      cts.Dispose();
   }
}
// The example displays output like the following:
//       Exponents of 2:
//          2 ^ 1 = 2
//          2 ^ 2 = 4
//          2 ^ 3 = 8
//          2 ^ 4 = 16
//          2 ^ 5 = 32
//          2 ^ 6 = 64
//          2 ^ 7 = 128
//          2 ^ 8 = 256
//          2 ^ 9 = 512
//          2 ^ 10 = 1,024
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim token As CancellationToken = cts.Token

      ' Get an integer to generate a list of its exponents.
      Dim rnd As New Random()
      Dim number As Integer = rnd.Next(2, 21)

      Dim t = Task.Factory.StartNew( Function(value)
                                        Dim n As Integer = CInt(value)
                                        Dim values(9) As Long
                                        For ctr As Integer = 1 To 10
                                           values(ctr - 1) = CLng(Math.Pow(n, ctr))
                                        Next
                                        return values
                                     End Function, number)
      Dim continuation = t.ContinueWith( Sub(antecedent, value)
                                            Console.WriteLine("Exponents of {0}:", value)
                                            For ctr As Integer = 0 To 9
                                               Console.WriteLine("   {0} {1} {2} = {3:N0}",
                                                                 value, ChrW(&h02C6), ctr + 1,
                                                                 antecedent.Result(ctr))
                                            Next
                                            Console.WriteLine()
                                         End Sub, number)
      continuation.Wait()

      cts.Dispose()
   End Sub
End Module
' The example displays output like the following:
'       Exponents of 2:
'          2 ^ 1 = 2
'          2 ^ 2 = 4
'          2 ^ 3 = 8
'          2 ^ 4 = 16
'          2 ^ 5 = 32
'          2 ^ 6 = 64
'          2 ^ 7 = 128
'          2 ^ 8 = 256
'          2 ^ 9 = 512
'          2 ^ 10 = 1,024

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>>)

Cria uma continuação que é executada de forma assíncrona quando a tarefa alvo é concluída.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>> continuationAction);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult))) As Task

Parâmetros

continuationAction
Action<Task<TResult>>

Uma ação a executar quando o antecedente Task<TResult> termina. Quando executado, o delegado recebe a tarefa concluída como argumento.

Devoluções

Uma nova tarefa de continuação.

Exceções

O continuationAction argumento é null.

Exemplos

O exemplo seguinte cria uma tarefa antecedente que utiliza a Peneira de Eratóstenes para calcular os números primos entre 1 e um valor introduzido pelo utilizador. Um array é usado para armazenar informação sobre os números primos. O índice do array representa o número, e o valor do elemento indica se esse número é composto (o seu valor é true) ou primo (o seu valor é false). Esta tarefa é então passada para uma tarefa de continuação, que é responsável por extrair os números primos do array inteiro e exibi-los.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main(string[] args)
   {
      int upperBound = args.Length >= 1 ? Int32.Parse(args[0]) : 200;

      var t1 = Task.Run(() => { // True = composite.
                                // False = prime.
                                bool[] values = new bool[upperBound + 1];
                                for (int ctr = 2; ctr <= (int) Math.Sqrt(upperBound); ctr++) {
                                   if (!values[ctr]) {
                                      for (int product = ctr * ctr; product <= upperBound;
                                                                    product = product + ctr)
                                         values[product] = true;
                                   }
                                }
                                return values; });
      var t2 = t1.ContinueWith( (antecedent) => { // Create a list of prime numbers.
                                                  var  primes = new List<int>();
                                                  bool[] numbers = antecedent.Result;
                                                  string output = String.Empty;

                                                  for (int ctr = 1; ctr <= numbers.GetUpperBound(0); ctr++)
                                                     if (!numbers[ctr])
                                                        primes.Add(ctr);

                                                  // Create the output string.
                                                  for (int ctr = 0; ctr < primes.Count; ctr++) {
                                                     output += primes[ctr].ToString("N0");
                                                     if (ctr < primes.Count - 1)
                                                        output += ",  ";
                                                     if ((ctr + 1) % 8 == 0)
                                                        output += Environment.NewLine;
                                                  }
                                                  //Display the result.
                                                  Console.WriteLine("Prime numbers from 1 to {0}:\n",
                                                                    upperBound);
                                                  Console.WriteLine(output);
                                                });
      try {
         t2.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions)
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
      }
   }
}
// The example displays output like the following:
//       Prime numbers from 1 to 400:
//
//       1,  2,  3,  5,  7,  11,  13,  17,
//       19,  23,  29,  31,  37,  41,  43,  47,
//       53,  59,  61,  67,  71,  73,  79,  83,
//       89,  97,  101,  103,  107,  109,  113,  127,
//       131,  137,  139,  149,  151,  157,  163,  167,
//       173,  179,  181,  191,  193,  197,  199,  211,
//       223,  227,  229,  233,  239,  241,  251,  257,
//       263,  269,  271,  277,  281,  283,  293,  307,
//       311,  313,  317,  331,  337,  347,  349,  353,
//       359,  367,  373,  379,  383,  389,  397,  401
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main(args() As String)
      Dim upperBound As Integer = If(args.Length >= 1, CInt(args(0)), 200)

      Dim t1 = Task.Run(Function()
                          ' True = composite.
                          ' False = prime.
                          Dim values(upperBound) As Boolean
                          For ctr = 2 To CInt(Math.Sqrt(upperBound))
                             If values(ctr) = False Then
                                For product = ctr * ctr To upperBound Step ctr
                                   values(product) = True
                                Next
                             End If
                          Next
                          Return values
                       End Function)

      Dim t2 = t1.ContinueWith(Sub(antecedent)
                                  ' Create a list of prime numbers.
                                  Dim primes As New List(Of Integer)()
                                  Dim numbers As Boolean() = antecedent.Result
                                  Dim output As String = String.Empty
                                  
                                  For ctr As Integer = 1 To numbers.GetUpperBound(0)
                                     If numbers(ctr) = False Then primes.Add(ctr)
                                  Next

                                  ' Create the output string.
                                  For ctr As Integer = 0 To primes.Count - 1
                                     output += primes(ctr).ToString("N0")
                                     If ctr < primes.Count - 1 Then output += ",  "
                                     If (ctr + 1) Mod 8 = 0 Then output += vbCrLf
                                  Next
                                  'Display the result.
                                  Console.WriteLine("Prime numbers from 1 to {0}:{1}",
                                                    upperBound, vbCrLf)
                                  Console.WriteLine(output)
                               End Sub)
      Try
         t2.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
   End Sub
End Module
' The example displays output like the following:
'       Prime numbers from 1 to 400:
'
'       1,  2,  3,  5,  7,  11,  13,  17,
'       19,  23,  29,  31,  37,  41,  43,  47,
'       53,  59,  61,  67,  71,  73,  79,  83,
'       89,  97,  101,  103,  107,  109,  113,  127,
'       131,  137,  139,  149,  151,  157,  163,  167,
'       173,  179,  181,  191,  193,  197,  199,  211,
'       223,  227,  229,  233,  239,  241,  251,  257,
'       263,  269,  271,  277,  281,  283,  293,  307,
'       311,  313,  317,  331,  337,  347,  349,  353,
'       359,  367,  373,  379,  383,  389,  397,  401
' If cancellation is requested, the example displays output like the following:
'       The operation was cancelled.

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, quer seja concluída devido a uma execução concluída com sucesso, falha devido a uma exceção não tratada, ou saída antecipada por cancelamento.

Ver também

Aplica-se a

ContinueWith(Action<Task<TResult>>, TaskScheduler)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

public:
 System::Threading::Tasks::Task ^ ContinueWith(Action<System::Threading::Tasks::Task<TResult> ^> ^ continuationAction, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWith(Action<System.Threading.Tasks.Task<TResult>> continuationAction, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Action<System.Threading.Tasks.Task<'Result>> * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWith (continuationAction As Action(Of Task(Of TResult)), scheduler As TaskScheduler) As Task

Parâmetros

continuationAction
Action<Task<TResult>>

Uma ação a executar quando terminar Task<TResult> . Quando executado, o delegado recebe a tarefa concluída como argumento.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Uma nova continuação Task.

Exceções

O continuationAction argumento é null.

-ou-

O scheduler argumento é null.

Observações

O retorno Task não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela função de continuação.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O scheduler argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

O fornecido CancellationToken já foi descartado.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

O continuationFunction, quando executado, deve devolver um Task<TResult>. O estado de conclusão desta tarefa será transferido para a tarefa devolvida da Task<TResult>.ContinueWith chamada.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,TNewResult>

Uma função para executar segundo a condição especificada em continuationOptions.

Quando executado, o delegado será passado como argumento para esta tarefa concluída.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O Task<TResult> foi descartado.

-ou-

O CancellationTokenSource que foi criado cancellationToken já foi eliminado.

O continuationFunction argumento é null.

-ou-

O scheduler argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

O continuationFunction, quando executado, deve devolver um Task<TResult>.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, scheduler As TaskScheduler) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela função de continuação.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O scheduler argumento é null.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, continuationOptions As TaskContinuationOptions) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela função de continuação.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

O continuationFunction, quando executado, deve devolver um Task<TResult>. O estado de conclusão desta tarefa será transferido para a tarefa devolvida da chamada ContinueWith.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object, cancellationToken As CancellationToken) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela função de continuação.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

O fornecido CancellationToken já foi descartado.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions)

Cria uma continuação que se executa de acordo com a condição especificada em continuationOptions.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), continuationOptions As TaskContinuationOptions) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,TNewResult>

Uma função para executar segundo a condição especificada em continuationOptions.

Quando executado, o delegado recebe a tarefa concluída como argumento.

continuationOptions
TaskContinuationOptions

Opções para quando a continuação está agendada e como se comporta. Isto inclui critérios, como OnlyOnCanceled, bem como opções de execução, como ExecuteSynchronously.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

O continuationOptions argumento especifica um valor inválido para TaskContinuationOptions.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

O continuationFunction, quando executado, deve devolver um Task<TResult>.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.CancellationToken cancellationToken);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), cancellationToken As CancellationToken) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída como argumento.

cancellationToken
CancellationToken

O CancellationToken que será atribuído à nova tarefa.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O Task<TResult> foi descartado.

-ou-

O CancellationTokenSource que foi criado cancellationToken já foi eliminado.

O continuationFunction argumento é null.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object)

Cria uma continuação que é executada quando o alvo Task<TResult> é concluído.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, System::Object ^, TNewResult> ^ continuationFunction, System::Object ^ state);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,object,TNewResult> continuationFunction, object state);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, obj, 'NewResult> * obj -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), Object, TNewResult), state As Object) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,Object,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída e o objeto de estado fornecido pelo chamador como argumentos.

state
Object

Um objeto que representa dados a serem usados pela função de continuação.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

Exemplos

O exemplo seguinte cria uma cadeia de tarefas de continuação. Cada tarefa fornece o tempo atual, um DateTime objeto, para o argumento de estado do ContinueWith(Action<Task,Object>, Object) método. Cada DateTime valor representa o tempo em que a tarefa de continuar é criada. Cada tarefa produz como resultado um segundo DateTime valor que representa o tempo em que a tarefa termina. Depois de todas as tarefas terminarem, o exemplo mostra a data e as horas em que cada tarefa de continuação começa e termina.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

// Demonstrates how to associate state with task continuations.
class ContinuationState
{
   // Simluates a lengthy operation and returns the time at which
   // the operation completed.
   public static DateTime DoWork()
   {
      // Simulate work by suspending the current thread
      // for two seconds.
      Thread.Sleep(2000);

      // Return the current time.
      return DateTime.Now;
   }

   static void Main(string[] args)
   {
      // Start a root task that performs work.
      Task<DateTime> t = Task<DateTime>.Run(delegate { return DoWork(); });

      // Create a chain of continuation tasks, where each task is
      // followed by another task that performs work.
      List<Task<DateTime>> continuations = new List<Task<DateTime>>();
      for (int i = 0; i < 5; i++)
      {
         // Provide the current time as the state of the continuation.
         t = t.ContinueWith(delegate { return DoWork(); }, DateTime.Now);
         continuations.Add(t);
      }

      // Wait for the last task in the chain to complete.
      t.Wait();

      // Print the creation time of each continuation (the state object)
      // and the completion time (the result of that task) to the console.
      foreach (var continuation in continuations)
      {
         DateTime start = (DateTime)continuation.AsyncState;
         DateTime end = continuation.Result;

         Console.WriteLine("Task was created at {0} and finished at {1}.",
            start.TimeOfDay, end.TimeOfDay);
      }
   }
}

/* Sample output:
Task was created at 10:56:21.1561762 and finished at 10:56:25.1672062.
Task was created at 10:56:21.1610677 and finished at 10:56:27.1707646.
Task was created at 10:56:21.1610677 and finished at 10:56:29.1743230.
Task was created at 10:56:21.1610677 and finished at 10:56:31.1779883.
Task was created at 10:56:21.1610677 and finished at 10:56:33.1837083.
*/
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

' Demonstrates how to associate state with task continuations.
Public Module ContinuationState
   ' Simluates a lengthy operation and returns the time at which
   ' the operation completed.
   Public Function DoWork() As Date
      ' Simulate work by suspending the current thread 
      ' for two seconds.
      Thread.Sleep(2000)

      ' Return the current time.
      Return Date.Now
   End Function

   Public Sub Main()
      ' Start a root task that performs work.
      Dim t As Task(Of Date) = Task(Of Date).Run(Function() DoWork())

      ' Create a chain of continuation tasks, where each task is
      ' followed by another task that performs work.
      Dim continuations As New List(Of Task(Of DateTime))()
      For i As Integer = 0 To 4
         ' Provide the current time as the state of the continuation.
         t = t.ContinueWith(Function(antecedent, state) DoWork(), DateTime.Now)
         continuations.Add(t)
      Next

      ' Wait for the last task in the chain to complete.
      t.Wait()

      ' Display the creation time of each continuation (the state object)
      ' and the completion time (the result of that task) to the console.
      For Each continuation In continuations
         Dim start As DateTime = CDate(continuation.AsyncState)
         Dim [end] As DateTime = continuation.Result

         Console.WriteLine("Task was created at {0} and finished at {1}.",
            start.TimeOfDay, [end].TimeOfDay)
      Next
   End Sub
End Module
' The example displays output like the following:
'       Task was created at 10:56:21.1561762 and finished at 10:56:25.1672062.
'       Task was created at 10:56:21.1610677 and finished at 10:56:27.1707646.
'       Task was created at 10:56:21.1610677 and finished at 10:56:29.1743230.
'       Task was created at 10:56:21.1610677 and finished at 10:56:31.1779883.
'       Task was created at 10:56:21.1610677 and finished at 10:56:33.1837083.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult)) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída como argumento.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a

ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler)

Cria uma continuação que é executada assíncrona quando o destino Task<TResult> termina.

public:
generic <typename TNewResult>
 System::Threading::Tasks::Task<TNewResult> ^ ContinueWith(Func<System::Threading::Tasks::Task<TResult> ^, TNewResult> ^ continuationFunction, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TNewResult> ContinueWith<TNewResult>(Func<System.Threading.Tasks.Task<TResult>,TNewResult> continuationFunction, System.Threading.Tasks.TaskScheduler scheduler);
override this.ContinueWith : Func<System.Threading.Tasks.Task<'Result>, 'NewResult> * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'NewResult>
Public Function ContinueWith(Of TNewResult) (continuationFunction As Func(Of Task(Of TResult), TNewResult), scheduler As TaskScheduler) As Task(Of TNewResult)

Parâmetros de Tipo Genérico

TNewResult

O tipo do resultado produzido pela continuação.

Parâmetros

continuationFunction
Func<Task<TResult>,TNewResult>

Uma função a executar quando o Task<TResult> estiver concluído. Quando executado, o delegado recebe a tarefa concluída como argumento.

scheduler
TaskScheduler

O TaskScheduler para associar à tarefa de continuação e para usar na sua execução.

Devoluções

Task<TNewResult>

Uma nova continuação Task<TResult>.

Exceções

O continuationFunction argumento é null.

-ou-

O scheduler argumento é null.

Observações

O retorno Task<TResult> não será agendado para execução até que a tarefa atual esteja concluída, seja por ter sido executado com sucesso, por falha devido a uma exceção não tratada, ou por sair mais cedo devido ao cancelamento.

Ver também

Aplica-se a