Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Task.WhenAll<TResult>, méthode (Task<TResult>[])

.NET Framework (current version)
 

Crée une tâche qui s'achève quand tous les objets Task<TResult> d'un tableau sont terminés.

Espace de noms:   System.Threading.Tasks
Assembly:  mscorlib (dans mscorlib.dll)

public static Task<TResult[]> WhenAll<TResult>(
	params Task<TResult>[] tasks
)

Paramètres

tasks

Tâches restantes à exécuter avant la fin.

Valeur de retour

Type: System.Threading.Tasks.Task<TResult[]>

Tâche qui représente l'achèvement de toutes les tâches fournies.

Paramètres de type

TResult

Type de la tâche terminée.

Exception Condition
ArgumentNullException

Le tasks argument était null.

ArgumentException

Le tasks tableau contenu un null tâche.

Si une tâche fournie se termine dans un état d'erreur, la tâche retournée se termine également dans un Faulted état, où ses exceptions contiendra l'agrégation de l'ensemble des exceptions non encapsulées à partir de chacune des tâches fournis.

Si aucune des tâches fournis a généré une erreur, mais au moins un d'eux a été annulé, la tâche retournée se termine par le Canceled état.

Si aucune des tâches a échoué et aucune des tâches ont été annulées, la tâche obtenue se termine par le RanToCompletion état.Le résultat de la tâche retournée sera défini sur un tableau contenant tous les résultats des tâches fournies dans le même ordre qu'ils ont été fournies (par exempleSi l'entrée des tâches de tableau contenu t1, t2, t3, résultat de la tâche de sortie retournera une TResult[]arr[0] == t1.Result, arr[1] == t2.Result, and arr[2] == t3.Result).

Si le fourni tableau/énumérable ne contient aucune tâche, la tâche retournée sera immédiatement passer à un RanToCompletion état avant d'être retourné à l'appelant.Retourné TResult[] sera un tableau d'éléments de 0.

L'exemple suivant crée dix tâches, chacune d'entre elles instancie un générateur de nombres aléatoires qui crée les 1 000 nombres aléatoires compris entre 1 et 1 000 et calcule leur moyenne.Dans ce cas, les dix tâches individuelles sont stockés dans un Task<Int64> tableau.Le Delay(Int32) méthode permet de retarder l'instanciation de générateurs de nombres aléatoires afin qu'ils ne sont pas créés avec les mêmes valeurs initiales.L'appel à la WhenAll<TResult> méthode retourne ensuite un Int64 tableau qui contient la moyenne calculée par chaque tâche.Ils sont ensuite utilisés pour calculer la moyenne globale.

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

public class Example
{
   public static void Main()
   {
      var tasks = new Task<long>[10];
      for (int ctr = 1; ctr <= 10; ctr++) {
         int delayInterval = 18 * ctr;
         tasks[ctr - 1] = Task.Run(async () => { long total = 0;
                                                 await Task.Delay(delayInterval);
                                                 var rnd = new Random();
                                                 // Generate 1,000 random numbers.
                                                 for (int n = 1; n <= 1000; n++)
                                                    total += rnd.Next(0, 1000);

                                                 return total; } );
      }
      var continuation = Task.WhenAll(tasks);
      long grandTotal = 0;
      foreach (var result in continuation.Result) {
         grandTotal += result;
         Console.WriteLine("Mean: {0:N2}, n = 1,000", result/1000.0);
      }

      Console.WriteLine("\nMean of Means: {0:N2}, n = 10,000",
                        grandTotal/10000);
   }
}
// The example displays output like the following:
//       Mean: 506.38, n = 1,000
//       Mean: 501.01, n = 1,000
//       Mean: 505.36, n = 1,000
//       Mean: 492.00, n = 1,000
//       Mean: 508.36, n = 1,000
//       Mean: 503.99, n = 1,000
//       Mean: 504.95, n = 1,000
//       Mean: 508.58, n = 1,000
//       Mean: 490.23, n = 1,000
//       Mean: 501.59, n = 1,000
//
//       Mean of Means: 502.00, n = 10,000

Universal Windows Platform
Disponible depuis 4.5
.NET Framework
Disponible depuis 4.5
Portable Class Library
Pris en charge dans : portable .NET platforms
Windows Phone Silverlight
Disponible depuis 8.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: