Task Constructeur (Action)
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, constructeur (Action)

 

Initialise un nouveau Task avec l'action spécifiée.

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

public Task(
	Action action
)

Paramètres

action
Type: System.Action

Délégué qui représente le code à exécuter dans la tâche.

Exception Condition
ArgumentNullException

L'argument action a la valeur null.

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancez une tâche est en appelant la méthode statique Task.Run(Action) ou TaskFactory.StartNew(Action) (méthode). Le seul avantage offert par ce constructeur est qu’il permet l’instanciation d’objet d’être séparé de l’appel de la tâche.

L’exemple suivant utilise le Task(Action) constructeur pour créer des tâches qui récupèrent les noms de fichiers dans les répertoires spécifiés. Toutes les tâches d’écrire les noms de fichiers à un seul ConcurrentBag<T> objet. L’exemple appelle ensuite la WaitAll(Task[]) pour s’assurer que toutes les tâches terminées et affiche le nombre total de noms de fichiers écrits dans le ConcurrentBag<T> objet.

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

public class Example
{
   public static void Main()
   {
      var list = new ConcurrentBag<string>();
      string[] dirNames = { ".", ".." };
      List<Task> tasks = new List<Task>();
      foreach (var dirName in dirNames) {
         Task t = new Task( () => { foreach(var path in Directory.GetFiles(dirName))
                                    list.Add(path); }  );
         tasks.Add(t);
         t.Start();
      }
      Task.WaitAll(tasks.ToArray());
      foreach (Task t in tasks)
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);

      Console.WriteLine("Number of files read: {0}", list.Count);
   }
}
// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23

L’exemple suivant est identique, sauf qu’il a utilisé la Run(Action) méthode pour instancier et exécuter la tâche en une seule opération. La méthode retourne la Task objet qui représente la tâche.

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

public class Example
{
   public static void Main()
   {
      var list = new ConcurrentBag<string>();
      string[] dirNames = { ".", ".." };
      List<Task> tasks = new List<Task>();
      foreach (var dirName in dirNames) {
         Task t = Task.Run( () => { foreach(var path in Directory.GetFiles(dirName)) 
                                       list.Add(path); }  );
         tasks.Add(t);
      }
      Task.WaitAll(tasks.ToArray());
      foreach (Task t in tasks)
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);

      Console.WriteLine("Number of files read: {0}", list.Count);
   }
}
// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23

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