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 Standardinstanz von die TaskFactory Klasse, die identisch mit dem Kennwort erstellt, durch den Aufruf eines parameterlosen TaskFactory.TaskFactory() Konstruktor.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 hat die folgenden Eigenschaftenwerte fest: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

Die häufigste Verwendung dieser Eigenschaft wird zum Erstellen und starten eine neue Aufgabe in einem einzigen Aufruf der TaskFactory.StartNew Methode.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 der .NET Framework 4.5.NET Framework 4.5, Task.Run Methode bietet die einfachste Möglichkeit zum Erstellen einer Task Objekt mit den Standardwerten für die Konfiguration.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 zwei Aufrufe an die TaskFactory.StartNew Methode.The following example uses the static Factory property to make two calls to the TaskFactory.StartNew method. Die erste füllt ein Array mit den Namen der Dateien im Verzeichnis Eigene Dateien des Benutzers, während das zweite ein Array mit den Namen der Unterverzeichnisse des MyDocuments-Verzeichnis des Benutzers aufgefü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. Es ruft dann die TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) -Methode, die Informationen über die Anzahl von Dateien und Verzeichnissen in die beiden Arrays angezeigt, nachdem die ersten beiden Aufgaben ausgeführt.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