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.Factory propriété

 

Date de publication : novembre 2016

Fournit l'accès aux méthodes de fabrique pour la création d'instances de Task et de Task<TResult>.

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

public static TaskFactory Factory { get; }

Valeur de propriété

Type: System.Threading.Tasks.TaskFactory

Objet de fabrique pouvant créer une variété d'objets Task et Task<TResult>.

Cette propriété retourne une instance par défaut de la TaskFactory classe qui est identique à celui créé par l’appel sans paramètre TaskFactory.TaskFactory() constructeur. Il présente les valeurs de propriété suivantes :

Property

Valeur

TaskFactory.CancellationToken

CancellationToken.None

TaskFactory.ContinuationOptions

TaskContinuationOptions.None

TaskFactory.CreationOptions

TaskCreationOptions.None

TaskFactory.Scheduler

null, ou TaskScheduler.Current

L’utilisation la plus courante de cette propriété consiste à créer et démarrer une nouvelle tâche dans un seul appel à la TaskFactory.StartNew (méthode).

System_CAPS_noteRemarque

Compter les .NET Framework 4.5, la Task.Run méthode fournit le moyen le plus simple pour créer un Task objet avec les valeurs de configuration par défaut.

L’exemple suivant utilise la méthode statique Factory propriété afin que les deux appels à la TaskFactory.StartNew (méthode). La première remplit un tableau avec les noms des fichiers dans le répertoire Mes documents, tandis que la seconde remplit un tableau avec les noms des sous-répertoires du répertoire Mes documents de l’utilisateur. Il appelle ensuite la TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) méthode, qui affiche des informations sur le nombre de fichiers et des répertoires dans les deux tableaux après les deux premières tâches ont terminé leur exécution.

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

public class Example
{
   public static void Main()
   {
      Task[] tasks = new Task[2];
      String[] files = null;
      String[] dirs = null;
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task.Factory.StartNew( () => files = Directory.GetFiles(docsDirectory));
      tasks[1] = Task.Factory.StartNew( () => dirs = Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", dirs.Length);
                                             Console.WriteLine("   {0} files", files.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 4.0
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 5.0
Silverlight pour Windows Phone
Disponible depuis 8.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: