TaskFactory.ContinueWhenAll TaskFactory.ContinueWhenAll TaskFactory.ContinueWhenAll TaskFactory.ContinueWhenAll Method

定义

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

重载

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

示例

下面的示例将启动单独的任务,使用正则表达式计算一组文本文件中单词的数目。The following example launches separate tasks that use a regular expression to count the number of words in a set of text files. ContinueWhenAll方法用于启动所有先行任务完成时显示的总字数的任务。The ContinueWhenAll method is used to launch a task that displays the total word count when all the antecedent tasks have completed.

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

延续任务在调用Task.Wait方法不允许它处理引发的前面的任务,因此该示例将检查异常Task.Status属性的每个先行任务,以确定任务是否成功。The call to the continuation task's Task.Wait method does not allow it to handle exceptions thrown by the antecedent tasks, so the example examines the Task.Status property of each antecedent task to determine whether the task succeeded.

注解

ContinueWhenAll方法执行continuationAction委托中的所有任务时tasks数组已完成,而不考虑其完成状态。The ContinueWhenAll method executes the continuationAction delegate when all tasks in the tasks array have completed, regardless of their completion status.

中的任务引发的异常tasks数组不是可用于通过结构化的异常处理延续任务。Exceptions thrown by tasks in the tasks array are not available to the continuation task through structured exception handling. 您可以确定通过检查引发的异常Task.Exception属性中的每个任务的tasks数组。You can determine which exceptions were thrown by examining the Task.Exception property of each task in the tasks array. 若要使用结构化的异常处理程序来处理由任务引发的异常tasks数组,调用Task.WaitAll(Task[])方法。To use structured exception handling to handle exceptions thrown by tasks in the tasks array, call the Task.WaitAll(Task[]) method.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

- 或 --or- 创建了 cancellationTokenCancellationTokenSource 已经被释放。The CancellationTokenSource that created cancellationToken has already been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

示例

以下示例创建一个取消令牌,将其传递单独的任务,使用正则表达式计算一组文本文件中单词的数目。The following example creates a cancellation token, which it passes to separate tasks that use a regular expression to count the number of words in a set of text files. 如果找不到一个文件,则将设置取消标记。The cancellation token is set if a file cannot be found. [],操作 (任务<xref:System.Threading.Tasks.TaskFactory.ContinueWhenAll%2A > 方法用于启动所有先行任务完成时显示的总字数的任务。The [], Action(Task<xref:System.Threading.Tasks.TaskFactory.ContinueWhenAll%2A> method is used to launch a task that displays the total word count when all the antecedent tasks have completed. 如果设置取消标记,指示已取消一个或多个任务,它将处理AggregateException异常并显示一条错误消息。If the cancellation token is set, which indicates that one or more tasks have been cancelled, it handles the AggregateException exception and displays an error message.

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.

注解

[],操作 (任务<xref:System.Threading.Tasks.TaskFactory.ContinueWhenAll%28System.Threading.Tasks.Task%5B%5D%2CSystem.Action%7BSystem.Threading.Tasks.Task%5B%5D%7D%2CSystem.Threading.CancellationToken%29 > 方法执行continuationAction委托中的所有任务时tasks数组已完成,而不考虑其完成状态。The [], Action(Task<xref:System.Threading.Tasks.TaskFactory.ContinueWhenAll%28System.Threading.Tasks.Task%5B%5D%2CSystem.Action%7BSystem.Threading.Tasks.Task%5B%5D%7D%2CSystem.Threading.CancellationToken%29> method executes the continuationAction delegate when all tasks in the tasks array have completed, regardless of their completion status.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

continuationOptions 参数指定的值无效。The continuationOptions argument specifies an invalid value.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task.

scheduler
TaskScheduler TaskScheduler TaskScheduler TaskScheduler

用于计划新的延续任务的对象。The object that is used to schedule the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

- 或 --or- scheduler 参数为 nullThe scheduler argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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>

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

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

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

scheduler
TaskScheduler TaskScheduler TaskScheduler TaskScheduler

用于计划新的延续任务的对象。The object that is used to schedule the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

- 或 --or- scheduler 参数为 nullThe scheduler argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

continuationOptions 参数指定的值无效。The continuationOptions argument specifies an invalid value.

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

- 或 --or- 创建了 cancellationTokenCancellationTokenSource 已经被释放。The CancellationTokenSource that created cancellationToken has already been disposed.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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)

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

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

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

continuationOptions 参数指定的值无效。The continuationOptions argument specifies an invalid value.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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>

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

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

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

- 或 --or- 创建了 cancellationTokenCancellationTokenSource 已经被释放。The CancellationTokenSource that created cancellationToken has already been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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)

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

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

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task<TAntecedentResult>[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

scheduler
TaskScheduler TaskScheduler TaskScheduler TaskScheduler

用于计划新的延续任务的对象。The object that is used to schedule the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

- 或 --or- scheduler 参数为 nullThe scheduler argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task<TAntecedentResult>[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

continuationOptions 参数指定的值无效。The continuationOptions argument specifies an invalid value.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task<TAntecedentResult>[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

- 或 --or- 创建了 cancellationTokenCancellationTokenSource 已经被释放。The CancellationTokenSource that created cancellationToken has already been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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

类型参数

TAntecedentResult

以前的 tasks 的结果的类型。The type of the result of the antecedent tasks.

参数

tasks
Task<TAntecedentResult>[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationAction
Action<Task<TAntecedentResult>[]>

tasks 数组中的所有任务完成时要执行的操作委托。The action delegate to execute when all tasks in the tasks array have completed.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationAction 参数为 nullThe continuationAction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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)

类型参数

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationFunction
Func<Task[],TResult>

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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>

类型参数

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationFunction
Func<Task[],TResult>

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

- 或 --or- 创建了 cancellationTokenCancellationTokenSource 已经被释放。The CancellationTokenSource that created cancellationToken has already been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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)

类型参数

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationFunction
Func<Task[],TResult>

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

返回

新的延续任务。The new continuation task.

异常

tasks 数组中的一个元素已被释放。An element in the tasks array has been disposed.

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

continuationOptions 参数指定的值无效。The continuationOptions argument specifies an invalid value.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

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

创建一个延续任务,该任务在一组指定的任务完成后开始。Creates a continuation task that starts when a set of specified tasks has completed.

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>

类型参数

TResult

continuationFunction 委托返回并与创建的任务关联的结果的类型。The type of the result that is returned by the continuationFunction delegate and associated with the created task.

参数

tasks
Task[]

继续执行的任务所在的数组。The array of tasks from which to continue.

continuationFunction
Func<Task[],TResult>

已经完成了在 tasks 数组中的所有任务完成时要异步执行的函数委托。The function delegate to execute asynchronously when all tasks in the tasks array have completed.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

将指派给新的延续任务的取消标记。The cancellation token to assign to the new continuation task.

continuationOptions
TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions TaskContinuationOptions

枚举值的按位组合,这些枚举值控制新的延续任务的行为。A bitwise combination of the enumeration values that control the behavior of the new continuation task. NotOn* 和 OnlyOn* 成员不受支持。The NotOn* and OnlyOn* members are not supported.

scheduler
TaskScheduler TaskScheduler TaskScheduler TaskScheduler

用于计划新的延续任务的对象。The object that is used to schedule the new continuation task.

返回

新的延续任务。The new continuation task.

异常

tasks 数组为 nullThe tasks array is null.

- 或 --or- continuationFunction 参数为 nullThe continuationFunction argument is null.

- 或 --or- scheduler 参数为 nullThe scheduler argument is null.

tasks 数组为空或包含 null 值。The tasks array is empty or contains a null value.

另请参阅

适用于