Task.Factory Task.Factory Task.Factory Task.Factory Property

Définition

Fournit l'accès aux méthodes de fabrique pour la création d'instances de Task et de Task<TResult>.Provides access to factory methods for creating and configuring Task and Task<TResult> instances.

public:
 static property System::Threading::Tasks::TaskFactory ^ Factory { System::Threading::Tasks::TaskFactory ^ get(); };
public static System.Threading.Tasks.TaskFactory Factory { get; }
member this.Factory : System.Threading.Tasks.TaskFactory
Public Shared ReadOnly Property Factory As TaskFactory

Valeur de propriété

Objet de fabrique pouvant créer une variété d'objets Task et Task<TResult>.A factory object that can create a variety of Task and Task<TResult> objects.

Remarques

Cette propriété retourne une instance par défaut de la TaskFactory classe qui est identique à celui créé par un appel sans paramètre TaskFactory.TaskFactory() constructeur.This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Il a les valeurs de propriété suivantes :It has the following property values:

PropertyProperty ValueValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler null, ou TaskScheduler.Currentnull, or 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).The most common use of this property is to create and start a new task in a single call to the TaskFactory.StartNew method.

Notes

En commençant par le .NET Framework 4.5.NET Framework 4.5, le Task.Run méthode fournit le moyen le plus simple de créer un Task objet avec les valeurs de configuration par défaut.Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a Task object with default configuration values.

L’exemple suivant utilise la méthode statique Factory propriété afin que les deux appels à la TaskFactory.StartNew (méthode).The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. 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.The first populates an array with the names of files in the user's MyDocuments directory, while the second populates an array with the names of subdirectories of the user's MyDocuments directory. 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 terminées à l’exécution.It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the two arrays after the first two tasks have completed execution.

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
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(1) As Task
      Dim files() As String = Nothing
      Dim dirs() As String = Nothing
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task.Factory.StartNew( Sub()
                                           files = Directory.GetFiles(docsDirectory)
                                        End Sub )
      tasks(1) = Task.Factory.StartNew( Sub()
                                           dirs = Directory.GetDirectories(docsDirectory)
                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", dirs.Length)
                                             Console.WriteLine("   {0} files", files.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

S’applique à

Voir aussi