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

Definition

Bietet Zugriff auf Factorymethoden zum Erstellen und Konfigurieren von Task- und Task<TResult>-Instanzen.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

Eigenschaftswert

Ein Factoryobjekt, das eine Vielzahl von Task- und Task<TResult>-Objekten erstellen kann.A factory object that can create a variety of Task and Task<TResult> objects.

Hinweise

Diese Eigenschaft gibt eine Standard Instanz der TaskFactory-Klasse zurück, die mit der übereinstimmt, die durch Aufrufen des Parameter losen TaskFactory.TaskFactory()-Konstruktors erstellt wurde.This property returns a default instance of the TaskFactory class that is identical to the one created by calling the parameterless TaskFactory.TaskFactory() constructor. Es verfügt über die folgenden Eigenschaftswerte:It has the following property values:

EigenschaftProperty WertValue
TaskFactory.CancellationToken CancellationToken.None
TaskFactory.ContinuationOptions TaskContinuationOptions.None
TaskFactory.CreationOptions TaskCreationOptions.None
TaskFactory.Scheduler null oder TaskScheduler.Currentnull, or TaskScheduler.Current

Diese Eigenschaft wird am häufigsten verwendet, um eine neue Aufgabe in einem einzigen aufzurufenden Befehl der TaskFactory.StartNew-Methode zu erstellen und zu starten.The most common use of this property is to create and start a new task in a single call to the TaskFactory.StartNew method.

Hinweis

Beginnend mit dem .NET Framework 4.5.NET Framework 4.5 bietet die Task.Run-Methode die einfachste Möglichkeit zum Erstellen eines Task-Objekts mit Standard Konfigurations Werten.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.

Im folgenden Beispiel wird die statische Factory-Eigenschaft verwendet, um zwei Aufrufe an die TaskFactory.StartNew-Methode durchführen.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. Füllt zunächst ein Array mit den Namen der Dateien im Verzeichnis "MyDocuments" des Benutzers auf, während das zweite ein Array mit den Namen der Unterverzeichnisse des Verzeichnisses "MyDocuments" des Benutzers auffüllt.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. Anschließend wird die TaskFactory.ContinueWhenAll(Task[], Action<Task[]>)-Methode aufgerufen, die Informationen über die Anzahl der Dateien und Verzeichnisse in den beiden Arrays anzeigt, nachdem die ersten beiden Tasks die Ausführung abgeschlossen haben.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

Gilt für:

Siehe auch