Compartilhar via


TaskFactory.ContinueWhenAll Método

Definição

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

Sobrecargas

ContinueWhenAll(Task[], Action<Task[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

ContinueWhenAll(Task[], Action<Task[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task ^> ^> ^ continuationAction);
public System.Threading.Tasks.Task ContinueWhenAll (System.Threading.Tasks.Task[] tasks, Action<System.Threading.Tasks.Task[]> continuationAction);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Action<System.Threading.Tasks.Task[]> -> System.Threading.Tasks.Task
Public Function ContinueWhenAll (tasks As Task(), continuationAction As Action(Of Task())) As Task

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Exemplos

O exemplo a seguir inicia tarefas separadas que usam uma expressão regular para contar o número de palavras em um conjunto de arquivos de texto. O ContinueWhenAll método é usado para iniciar uma tarefa que exibe a contagem total de palavras quando todas as tarefas antecedentes são concluídas.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] filenames = { "chapter1.txt", "chapter2.txt", 
                             "chapter3.txt", "chapter4.txt",
                             "chapter5.txt" };
      string pattern = @"\b\w+\b";
      var tasks = new List<Task>();  
      int totalWords = 0;
        
      // Determine the number of words in each file.
      foreach (var filename in filenames) 
         tasks.Add( Task.Factory.StartNew( fn => { if (! File.Exists(fn.ToString()))
                                                      throw new FileNotFoundException("{0} does not exist.", filename);

                                                   StreamReader sr = new StreamReader(fn.ToString());
                                                   String content = sr.ReadToEnd();
                                                   sr.Close();
                                                   int words = Regex.Matches(content, pattern).Count;
                                                   Interlocked.Add(ref totalWords, words); 
                                                   Console.WriteLine("{0,-25} {1,6:N0} words", fn, words); }, 
                                           filename));

      var finalTask = Task.Factory.ContinueWhenAll(tasks.ToArray(), wordCountTasks => {
                                                    int nSuccessfulTasks = 0;
                                                    int nFailed = 0;
                                                    int nFileNotFound = 0;
                                                    foreach (var t in wordCountTasks) {
                                                       if (t.Status == TaskStatus.RanToCompletion) 
                                                          nSuccessfulTasks++;
                                                       
                                                       if (t.Status == TaskStatus.Faulted) {
                                                          nFailed++;  
                                                          t.Exception.Handle( (e) => { 
                                                             if (e is FileNotFoundException)
                                                                nFileNotFound++;
                                                             return true;   
                                                          });
                                                       } 
                                                    }   
                                                    Console.WriteLine("\n{0,-25} {1,6} total words\n", 
                                                                      String.Format("{0} files", nSuccessfulTasks), 
                                                                      totalWords); 
                                                    if (nFailed > 0) {
                                                       Console.WriteLine("{0} tasks failed for the following reasons:", nFailed);
                                                       Console.WriteLine("   File not found:    {0}", nFileNotFound);
                                                       if (nFailed != nFileNotFound)
                                                          Console.WriteLine("   Other:          {0}", nFailed - nFileNotFound);
                                                    } 
                                                    });  
      finalTask.Wait();                                                                  
   }
}
// The example displays output like the following:
//       chapter2.txt               1,585 words
//       chapter1.txt               4,012 words
//       chapter5.txt               4,660 words
//       chapter3.txt               7,481 words
//       
//       4 files                    17738 total words
//       
//       1 tasks failed for the following reasons:
//          File not found:    1
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Text.RegularExpressions

Module Example
   Dim totalWords As Integer = 0
   
   Public Sub Main()
      Dim filenames() As String = { "chapter1.txt", "chapter2.txt", 
                                    "chapter3.txt", "chapter4.txt",
                                    "chapter5.txt" }
      Dim pattern As String = "\b\w+\b"
      Dim tasks As New List(Of Task)()  
        
      ' Determine the number of words in each file.
      For Each filename In filenames 
         tasks.Add(Task.Factory.StartNew( Sub(fn)
                                             If Not File.Exists(filename)
                                                Throw New FileNotFoundException("{0} does not exist.", filename)
                                             End If
                                             
                                             Dim sr As New StreamReader(fn.ToString())
                                             Dim content As String = sr.ReadToEnd()
                                             sr.Close()
                                             Dim words As Integer = Regex.Matches(content, pattern).Count
                                             Interlocked.Add(totalWords, words) 
                                             Console.WriteLine("{0,-25} {1,6:N0} words", fn, words)
                                          End Sub, filename))
      Next
      
      Dim finalTask As Task = Task.Factory.ContinueWhenAll(tasks.ToArray(), 
                                                           Sub(wordCountTasks As Task() )
                                                              Dim nSuccessfulTasks As Integer = 0
                                                              Dim nFailed As Integer = 0
                                                              Dim nFileNotFound As Integer = 0
                                                              For Each t In wordCountTasks
                                                                 If t.Status = TaskStatus.RanToCompletion Then _ 
                                                                    nSuccessfulTasks += 1
                                                       
                                                                 If t.Status = TaskStatus.Faulted Then
                                                                    nFailed += 1  
                                                                    t.Exception.Handle(Function(e As Exception) 
                                                                                          If TypeOf e Is FileNotFoundException Then
                                                                                             nFileNotFound += 1
                                                                                          End If   
                                                                                          Return True   
                                                                                       End Function)                       
                                                                 End If 
                                                              Next   
                                                              Console.WriteLine()
                                                              Console.WriteLine("{0,-25} {1,6} total words", 
                                                                                String.Format("{0} files", nSuccessfulTasks), 
                                                                                totalWords) 
                                                              If nFailed > 0 Then
                                                                 Console.WriteLine()
                                                                 Console.WriteLine("{0} tasks failed for the following reasons:", nFailed)
                                                                 Console.WriteLine("   File not found:    {0}", nFileNotFound)
                                                                 If nFailed <> nFileNotFound Then
                                                                    Console.WriteLine("   Other:          {0}", nFailed - nFileNotFound)
                                                                 End If 
                                                              End If
                                                           End Sub)
      finalTask.Wait()                                                                  
   End Sub
   
   Private Sub DisplayResult(wordCountTasks As Task())
   End Sub
End Module
' The example displays output like the following:
'       chapter2.txt               1,585 words
'       chapter1.txt               4,012 words
'       chapter5.txt               4,660 words
'       chapter3.txt               7,481 words
'       
'       4 files                    17738 total words
'       
'       1 tasks failed for the following reasons:
'          File not found:    1

A chamada para o método da tarefa de Task.Wait continuação não permite que ela trate exceções geradas pelas tarefas anteriores, portanto, o exemplo examina a Task.Status propriedade de cada tarefa anterior para determinar se a tarefa foi bem-sucedida.

Comentários

O ContinueWhenAll método executa o continuationAction delegado quando todas as tarefas na tasks matriz são concluídas, independentemente de seu status de conclusão.

As exceções geradas por tarefas na tasks matriz não estão disponíveis para a tarefa de continuação por meio do tratamento de exceções estruturados. Você pode determinar quais exceções foram geradas examinando a Task.Exception propriedade de cada tarefa na tasks matriz. Para usar o tratamento de exceções estruturadas para lidar com exceções geradas por tarefas na tasks matriz, chame o Task.WaitAll(Task[]) método.

Confira também

Aplica-se a

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task ^> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWhenAll (System.Threading.Tasks.Task[] tasks, Action<System.Threading.Tasks.Task[]> continuationAction, System.Threading.CancellationToken cancellationToken);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Action<System.Threading.Tasks.Task[]> * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function ContinueWhenAll (tasks As Task(), continuationAction As Action(Of Task()), cancellationToken As CancellationToken) As Task

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

- ou - O CancellationTokenSource que criou cancellationToken já foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Exemplos

O exemplo a seguir cria um token de cancelamento, que passa para tarefas separadas que usam uma expressão regular para contar o número de palavras em um conjunto de arquivos de texto. O token de cancelamento será definido se um arquivo não puder ser encontrado. O ContinueWhenAll(Task[], Action{Task[]}, CancellationToken) método é usado para iniciar uma tarefa que exibe a contagem total de palavras quando todas as tarefas precedentes são concluídas. Se o token de cancelamento estiver definido, o que indica que uma ou mais tarefas foram canceladas, ele manipulará a AggregateException exceção e exibirá uma mensagem de erro.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] filenames = { "chapter1.txt", "chapter2.txt", 
                             "chapter3.txt", "chapter4.txt",
                             "chapter5.txt" };
      string pattern = @"\b\w+\b";
      var tasks = new List<Task>();  
      CancellationTokenSource source = new CancellationTokenSource();
      CancellationToken token = source.Token;
      int totalWords = 0;
        
      // Determine the number of words in each file.
      foreach (var filename in filenames)
         tasks.Add( Task.Factory.StartNew( fn => { token.ThrowIfCancellationRequested(); 

                                                   if (! File.Exists(fn.ToString())) {
                                                      source.Cancel();
                                                      token.ThrowIfCancellationRequested();
                                                   }
                                                   
                                                   StreamReader sr = new StreamReader(fn.ToString());
                                                   String content = sr.ReadToEnd();
                                                   sr.Close();
                                                   int words = Regex.Matches(content, pattern).Count;
                                                   Interlocked.Add(ref totalWords, words); 
                                                   Console.WriteLine("{0,-25} {1,6:N0} words", fn, words); }, 
                                           filename, token));

      var finalTask = Task.Factory.ContinueWhenAll(tasks.ToArray(), wordCountTasks => {
                                                    if (! token.IsCancellationRequested) 
                                                       Console.WriteLine("\n{0,-25} {1,6} total words\n", 
                                                                         String.Format("{0} files", wordCountTasks.Length), 
                                                                         totalWords); 
                                                   }, token); 
      try {                                                   
         finalTask.Wait();
      }
      catch (AggregateException ae) {
         foreach (Exception inner in ae.InnerExceptions)
            if (inner is TaskCanceledException)
               Console.WriteLine("\nFailure to determine total word count: a task was cancelled.");
            else
               Console.WriteLine("\nFailure caused by {0}", inner.GetType().Name);      
      }
      finally {
         source.Dispose();
      }
   }
}
// The example displays output like the following:
//       chapter2.txt               1,585 words
//       chapter1.txt               4,012 words
//       
//       Failure to determine total word count: a task was cancelled.
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim filenames() As String= { "chapter1.txt", "chapter2.txt", 
                                   "chapter3.txt", "chapter4.txt",
                                   "chapter5.txt" }
      Dim pattern As String = "\b\w+\b"
      Dim tasks As New List(Of Task)()  
      Dim source As New CancellationTokenSource()
      Dim token As CancellationToken = source.Token
      Dim totalWords As Integer = 0
        
      ' Determine the number of words in each file.
      For Each filename In filenames
         tasks.Add( Task.Factory.StartNew( Sub(obj As Object)
                                              Dim fn As String = CStr(obj)
                                              token.ThrowIfCancellationRequested() 
                                              If Not File.Exists(fn) Then 
                                                 source.Cancel()
                                                 token.ThrowIfCancellationRequested()
                                              End If        
                                                   
                                              Dim sr As New StreamReader(fn.ToString())
                                              Dim content As String = sr.ReadToEnd()
                                              sr.Close()
                                              Dim words As Integer = Regex.Matches(content, pattern).Count
                                              Interlocked.Add(totalWords, words) 
                                              Console.WriteLine("{0,-25} {1,6:N0} words", fn, words) 
                                           End Sub, filename, token))
      Next
      
      Dim finalTask As Task = Task.Factory.ContinueWhenAll(tasks.ToArray(), 
                                                           Sub(wordCountTasks As Task())
                                                              If Not token.IsCancellationRequested Then 
                                                                 Console.WriteLine("\n{0,-25} {1,6} total words\n", 
                                                                                   String.Format("{0} files", wordCountTasks.Length), 
                                                                                   totalWords)
                                                              End If                      
                                                           End Sub, token) 
      Try                                                    
         finalTask.Wait()
      Catch ae As AggregateException 
         For Each inner In ae.InnerExceptions
            Console.WriteLine()
            If TypeOf inner Is TaskCanceledException
               Console.WriteLine("Failure to determine total word count: a task was cancelled.")
            Else
               Console.WriteLine("Failure caused by {0}", inner.GetType().Name)
            End If 
         Next           
      Finally
         source.Dispose()
      End Try                                                                     
   End Sub
End Module
' The example displays output like the following:
'       chapter2.txt               1,585 words
'       chapter1.txt               4,012 words
'       
'       Failure to determine total word count: a task was cancelled.

Comentários

Esse método executa o continuationAction delegado quando todas as tarefas na tasks matriz são concluídas, independentemente do status de conclusão.

Confira também

Aplica-se a

ContinueWhenAll(Task[], Action<Task[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task ^> ^> ^ continuationAction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWhenAll (System.Threading.Tasks.Task[] tasks, Action<System.Threading.Tasks.Task[]> continuationAction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Action<System.Threading.Tasks.Task[]> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWhenAll (tasks As Task(), continuationAction As Action(Of Task()), continuationOptions As TaskContinuationOptions) As Task

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

O argumento continuationOptions especifica um valor inválido.

A matriz do tasks está vazia ou contém um valor nulo.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll(Task[], Action<Task[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task ^> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWhenAll (System.Threading.Tasks.Task[] tasks, Action<System.Threading.Tasks.Task[]> continuationAction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Action<System.Threading.Tasks.Task[]> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWhenAll (tasks As Task(), continuationAction As Action(Of Task()), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação.

scheduler
TaskScheduler

O objeto que é usado para agendar a nova tarefa de continuação.

Retornos

Task

A nova tarefa de continuação.

Exceções

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

- ou - O argumento scheduler é null.

A matriz do tasks está vazia ou contém um valor nulo.

continuationOptions especifica um valor TaskContinuationOptions inválido.

O CancellationToken fornecido já foi descartado.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult, typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^, TResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TAntecedentResult,TResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult> continuationFunction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Func<System.Threading.Tasks.Task<'AntecedentResult>[], 'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TAntecedentResult, TResult) (tasks As Task(Of TAntecedentResult)(), continuationFunction As Func(Of Task(Of TAntecedentResult)(), TResult), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task(Of TResult)

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task<TAntecedentResult>[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

scheduler
TaskScheduler

O objeto que é usado para agendar a nova tarefa de continuação.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

- ou - O argumento scheduler é null.

A matriz do tasks está vazia ou contém um valor nulo.

O argumento continuationOptions especifica um valor inválido.

Um elemento na matriz do tasks foi descartado.

- ou - O CancellationTokenSource que criou cancellationToken já foi descartado.

Comentários

O NotOn* e o OnlyOn*TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult, typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^, TResult> ^ continuationFunction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TAntecedentResult,TResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult> continuationFunction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Func<System.Threading.Tasks.Task<'AntecedentResult>[], 'Result> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TAntecedentResult, TResult) (tasks As Task(Of TAntecedentResult)(), continuationFunction As Func(Of Task(Of TAntecedentResult)(), TResult), continuationOptions As TaskContinuationOptions) As Task(Of TResult)

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task<TAntecedentResult>[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

O argumento continuationOptions especifica um valor inválido.

A matriz do tasks está vazia ou contém um valor nulo.

Comentários

O NotOn* e o OnlyOn*TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult, typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^, TResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TAntecedentResult,TResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult> continuationFunction, System.Threading.CancellationToken cancellationToken);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Func<System.Threading.Tasks.Task<'AntecedentResult>[], 'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TAntecedentResult, TResult) (tasks As Task(Of TAntecedentResult)(), continuationFunction As Func(Of Task(Of TAntecedentResult)(), TResult), cancellationToken As CancellationToken) As Task(Of TResult)

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task<TAntecedentResult>[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

- ou - O CancellationTokenSource que criou cancellationToken já foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult,TResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult, typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^, TResult> ^ continuationFunction);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TAntecedentResult,TResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult> continuationFunction);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Func<System.Threading.Tasks.Task<'AntecedentResult>[], 'Result> -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TAntecedentResult, TResult) (tasks As Task(Of TAntecedentResult)(), continuationFunction As Func(Of Task(Of TAntecedentResult)(), TResult)) As Task(Of TResult)

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task<TAntecedentResult>[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult>
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task ContinueWhenAll<TAntecedentResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Action<System.Threading.Tasks.Task<TAntecedentResult>[]> continuationAction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Action<System.Threading.Tasks.Task<'AntecedentResult>[]> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function ContinueWhenAll(Of TAntecedentResult) (tasks As Task(Of TAntecedentResult)(), continuationAction As Action(Of Task(Of TAntecedentResult)()), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task<TAntecedentResult>[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

scheduler
TaskScheduler

O objeto que é usado para agendar a nova tarefa de continuação.

Retornos

Task

A nova tarefa de continuação.

Exceções

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

- ou - O argumento scheduler é null.

A matriz do tasks está vazia ou contém um valor nulo.

continuationOptions especifica um valor TaskContinuationOptions inválido.

O CancellationToken fornecido já foi descartado.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult>
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^> ^ continuationAction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task ContinueWhenAll<TAntecedentResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Action<System.Threading.Tasks.Task<TAntecedentResult>[]> continuationAction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Action<System.Threading.Tasks.Task<'AntecedentResult>[]> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task
Public Function ContinueWhenAll(Of TAntecedentResult) (tasks As Task(Of TAntecedentResult)(), continuationAction As Action(Of Task(Of TAntecedentResult)()), continuationOptions As TaskContinuationOptions) As Task

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task<TAntecedentResult>[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

O argumento continuationOptions especifica um valor inválido.

A matriz do tasks está vazia ou contém um valor nulo.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult>
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^> ^ continuationAction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task ContinueWhenAll<TAntecedentResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Action<System.Threading.Tasks.Task<TAntecedentResult>[]> continuationAction, System.Threading.CancellationToken cancellationToken);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Action<System.Threading.Tasks.Task<'AntecedentResult>[]> * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function ContinueWhenAll(Of TAntecedentResult) (tasks As Task(Of TAntecedentResult)(), continuationAction As Action(Of Task(Of TAntecedentResult)()), cancellationToken As CancellationToken) As Task

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task<TAntecedentResult>[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

- ou - O CancellationTokenSource que criou cancellationToken já foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Action<Task<TAntecedentResult>[]>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TAntecedentResult>
 System::Threading::Tasks::Task ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^ tasks, Action<cli::array <System::Threading::Tasks::Task<TAntecedentResult> ^> ^> ^ continuationAction);
public System.Threading.Tasks.Task ContinueWhenAll<TAntecedentResult> (System.Threading.Tasks.Task<TAntecedentResult>[] tasks, Action<System.Threading.Tasks.Task<TAntecedentResult>[]> continuationAction);
member this.ContinueWhenAll : System.Threading.Tasks.Task<'AntecedentResult>[] * Action<System.Threading.Tasks.Task<'AntecedentResult>[]> -> System.Threading.Tasks.Task
Public Function ContinueWhenAll(Of TAntecedentResult) (tasks As Task(Of TAntecedentResult)(), continuationAction As Action(Of Task(Of TAntecedentResult)())) As Task

Parâmetros de tipo

TAntecedentResult

O tipo do resultado do antecedente tasks.

Parâmetros

tasks
Task<TAntecedentResult>[]

A matriz de tarefas da qual continuar.

continuationAction
Action<Task<TAntecedentResult>[]>

O delegado de ação a ser executado quando todas as tarefas na matriz do tasks estiverem concluídas.

Retornos

Task

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationAction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task ^> ^, TResult> ^ continuationFunction);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TResult> (System.Threading.Tasks.Task[] tasks, Func<System.Threading.Tasks.Task[],TResult> continuationFunction);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Func<System.Threading.Tasks.Task[], 'Result> -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TResult) (tasks As Task(), continuationFunction As Func(Of Task(), TResult)) As Task(Of TResult)

Parâmetros de tipo

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task ^> ^, TResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TResult> (System.Threading.Tasks.Task[] tasks, Func<System.Threading.Tasks.Task[],TResult> continuationFunction, System.Threading.CancellationToken cancellationToken);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Func<System.Threading.Tasks.Task[], 'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TResult) (tasks As Task(), continuationFunction As Func(Of Task(), TResult), cancellationToken As CancellationToken) As Task(Of TResult)

Parâmetros de tipo

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

- ou - O CancellationTokenSource que criou cancellationToken já foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

A matriz do tasks está vazia ou contém um valor nulo.

Confira também

Aplica-se a

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task ^> ^, TResult> ^ continuationFunction, System::Threading::Tasks::TaskContinuationOptions continuationOptions);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TResult> (System.Threading.Tasks.Task[] tasks, Func<System.Threading.Tasks.Task[],TResult> continuationFunction, System.Threading.Tasks.TaskContinuationOptions continuationOptions);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Func<System.Threading.Tasks.Task[], 'Result> * System.Threading.Tasks.TaskContinuationOptions -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TResult) (tasks As Task(), continuationFunction As Func(Of Task(), TResult), continuationOptions As TaskContinuationOptions) As Task(Of TResult)

Parâmetros de tipo

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

Um elemento na matriz do tasks foi descartado.

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

O argumento continuationOptions especifica um valor inválido.

A matriz do tasks está vazia ou contém um valor nulo.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a

ContinueWhenAll<TResult>(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Cria uma tarefa de continuação que começa quando um conjunto de tarefas especificadas foi concluído.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ ContinueWhenAll(cli::array <System::Threading::Tasks::Task ^> ^ tasks, Func<cli::array <System::Threading::Tasks::Task ^> ^, TResult> ^ continuationFunction, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskContinuationOptions continuationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TResult> ContinueWhenAll<TResult> (System.Threading.Tasks.Task[] tasks, Func<System.Threading.Tasks.Task[],TResult> continuationFunction, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskContinuationOptions continuationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.ContinueWhenAll : System.Threading.Tasks.Task[] * Func<System.Threading.Tasks.Task[], 'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskContinuationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'Result>
Public Function ContinueWhenAll(Of TResult) (tasks As Task(), continuationFunction As Func(Of Task(), TResult), cancellationToken As CancellationToken, continuationOptions As TaskContinuationOptions, scheduler As TaskScheduler) As Task(Of TResult)

Parâmetros de tipo

TResult

O tipo do resultado retornado pelo continuationFunction delegado e associado à tarefa criada.

Parâmetros

tasks
Task[]

A matriz de tarefas da qual continuar.

continuationFunction
Func<Task[],TResult>

O delegado de função a ser executado de forma assíncrona quando todas as tarefas na matriz tasks forem concluídas.

cancellationToken
CancellationToken

O token de cancelamento a ser atribuído à nova tarefa de continuação.

continuationOptions
TaskContinuationOptions

Uma combinação bit a bit dos valores de enumeração que controlam o comportamento da nova tarefa de continuação. Não há suporte para os membros NotOn* e OnlyOn*.

scheduler
TaskScheduler

O objeto que é usado para agendar a nova tarefa de continuação.

Retornos

Task<TResult>

A nova tarefa de continuação.

Exceções

A matriz do tasks é null.

- ou - O argumento continuationFunction é null.

- ou - O argumento scheduler é null.

A matriz do tasks está vazia ou contém um valor nulo.

continuationOptions especifica um valor TaskContinuationOptions inválido.

O CancellationToken fornecido já foi descartado.

Comentários

O NotOn* e o OnlyOn* TaskContinuationOptions, que restringem para os quais TaskStatus estados uma continuação será executada, são ilegais com ContinueWhenAll.

Confira também

Aplica-se a