TaskFactory<TResult> Class

Definition

Bietet Unterstützung für das Erstellen und Planen von Task<TResult>-Objekten.Provides support for creating and scheduling Task<TResult> objects.

generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)

Type Parameters

TResult

Der Rückgabewert der Task<TResult>-Objekte, die von den Methoden dieser Klasse erstellt werden.The return value of the Task<TResult> objects that the methods of this class create.

Inheritance
TaskFactory<TResult>

Examples

Im folgenden Beispiel wird die statische Factory-Eigenschaft verwendet, um zwei Aufrufe an die TaskFactory<TResult>.StartNew-Methode durchführen.The following example uses the static Factory property to make two calls to the TaskFactory<TResult>.StartNew method. Der erste Task gibt ein Zeichen folgen Array zurück, das mit den Namen der Dateien im Verzeichnis "MyDocuments" des Benutzers aufgefüllt wird, während das zweite ein Zeichen folgen Array zurückgibt, das mit den Namen der Unterverzeichnisse des Verzeichnisses "MyDocuments" des Benutzers aufgefüllt ist.The first task returns a string array that is populated with the names of files in the user's MyDocuments directory, while the second returns a string array that is populated 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 Arrays anzeigt, die von den beiden Aufgaben nach Abschluss der Ausführung zurückgegeben werden.It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the arrays returned by the two tasks after they have completed execution.

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

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

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

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.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(Of String())
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
''                                        End Sub )
      tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
''                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", tasks(1).Result.Length)
                                             Console.WriteLine("   {0} files", tasks(0).Result.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

Remarks

Der .NET Framework stellt zwei Factorys zum Erstellen und Planen von Aufgaben bereit:The .NET Framework provides two factories for creating and scheduling tasks:

Die TaskFactory<TResult>-Klasse ermöglicht Folgendes:The TaskFactory<TResult> class allows you to do the following:

  • Erstellen Sie eine Aufgabe, und starten Sie Sie sofort, indem Sie die StartNew-Methode aufrufen.Create a task and start it immediately by calling the StartNew method. Sie können die über Ladungen dieser Methode aufzurufen, um eine Aufgabe zu erstellen und auszuführen, die nicht standardmäßige Argumente erfordert.You can call the overloads of this method to create and execute a task that requires non-default arguments.

    Warning

    Beginnend mit dem .NET Framework 4.5.NET Framework 4.5bietet die Task.Run-Methode die einfachste Möglichkeit, um eine Aufgabe mit Standard Konfigurations Werten zu erstellen und sofort zu starten.Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a task with default configuration values and start it immediately.

  • Erstellen Sie einen Task, der gestartet wird, wenn eine der Aufgaben in einem Array durch Aufrufen der ContinueWhenAny-oder ContinueWhenAny-Methode abgeschlossen wurde.Create a task that starts when any one of the tasks in an array has completed by calling the ContinueWhenAny or ContinueWhenAny method.

  • Erstellen Sie eine Aufgabe, die gestartet wird, wenn alle Aufgaben in einem Array abgeschlossen wurden, indem Sie die ContinueWhenAll-oder ContinueWhenAll-Methode aufrufen.Create a task that starts when all the tasks in an array have completed by calling the ContinueWhenAll or ContinueWhenAll method.

Die statische Task<TResult>.Factory-Eigenschaft gibt ein Standardmäßiges TaskFactory<TResult>-Objekt zurück.The static Task<TResult>.Factory property returns a default TaskFactory<TResult> object. Sie können auch einen der TaskFactory<TResult> Klassenkonstruktoren aufzurufen, um die Task<TResult> Objekte zu konfigurieren, die von der TaskFactory<TResult>-Klasse erstellt werden.You can also call one of the TaskFactory<TResult> class constructors to configure the Task<TResult> objects that the TaskFactory<TResult> class creates. Im folgenden Beispiel wird ein neues TaskFactory<TResult>-Objekt konfiguriert, um Tasks zu erstellen, die über ein angegebenes Abbruch Token, Aufgaben Erstellungs Optionen, Fortsetzungs Optionen und einen angepassten Aufgabenplaner verfügen.The following example configures a new TaskFactory<TResult> object to create tasks that have a specified cancellation token, task creation options, continuation options, and a customized task scheduler.

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

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim factory As New TaskFactory(Of Integer)(
                         cts.Token,
                         TaskCreationOptions.PreferFairness,
                         TaskContinuationOptions.ExecuteSynchronously,
                         New CustomScheduler())

      Dim t2 = factory.StartNew(Function() DoWork())
      cts.Dispose()
   End Sub

   Function DoWork() As Integer
      Return If(Date.Now.Hour <= 12, 1, 2)
   End Function
End Module

In den meisten Fällen ist es nicht erforderlich, eine neue TaskFactory<TResult> Instanz zu instanziieren.In most cases, you do not have to instantiate a new TaskFactory<TResult> instance. Stattdessen können Sie die statische Task<TResult>.Factory-Eigenschaft verwenden, die ein Factory-Objekt zurückgibt, das Standardwerte verwendet.Instead, you can use the static Task<TResult>.Factory property, which returns a factory object that uses default values. Anschließend können Sie die zugehörigen Methoden zum Starten neuer Aufgaben oder zum Definieren von Aufgaben Fortsetzungen aufzurufen.You can then call its methods to start new tasks or define task continuations. Eine Abbildung finden Sie im Beispiel.For an illustration, see the example.

Constructors

TaskFactory<TResult>()

Initialisiert eine TaskFactory<TResult>-Instanz mit der Standardkonfiguration.Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken)

Initialisiert eine TaskFactory<TResult>-Instanz mit der Standardkonfiguration.Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Initialisiert eine TaskFactory<TResult>-Instanz mit der angegebenen Konfiguration.Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

Initialisiert eine TaskFactory<TResult>-Instanz mit der angegebenen Konfiguration.Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskScheduler)

Initialisiert eine TaskFactory<TResult>-Instanz mit der angegebenen Konfiguration.Initializes a TaskFactory<TResult> instance with the specified configuration.

Properties

CancellationToken

Ruft das Standardabbruchtoken für diese Aufgabenfactory ab.Gets the default cancellation token for this task factory.

ContinuationOptions

Ruft den TaskContinuationOptions-Enumerationswert für diese Aufgabenfactory ab.Gets the TaskContinuationOptions enumeration value for this task factory.

CreationOptions

Ruft den TaskCreationOptions-Enumerationswert für diese Aufgabenfactory ab.Gets the TaskCreationOptions enumeration value for this task factory.

Scheduler

Ruft das Aufgabenplaner für diese Aufgabenfactory ab.Gets the task scheduler for this task factory.

Methods

ContinueWhenAll(Task[], Func<Task[],TResult>)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss eines Satzes angegebener Aufgaben gestartet wird.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAny(Task[], Func<Task,TResult>)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

Erstellt eine Fortsetzungsaufgabe, die nach dem Abschluss einer Aufgabe im bereitgestellten Satz gestartet wird.Creates a continuation task that will be started upon the completion of any task in the provided set.

Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>)

Erstellt eine Aufgabe, die eine EndMethod-Funktion ausführt, wenn ein angegebenes IAsyncResult abgeschlossen wird.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

Erstellt eine Aufgabe, die eine EndMethod-Funktion ausführt, wenn ein angegebenes IAsyncResult abgeschlossen wird.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

Erstellt eine Aufgabe, die eine EndMethod-Funktion ausführt, wenn ein angegebenes IAsyncResult abgeschlossen wird.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

Erstellt eine Aufgabe, die ein dem asynchronen Programmiermodellmuster entsprechendes Paar von Begin- und End-Methoden darstellt.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
StartNew(Func<Object,TResult>, Object)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, TaskCreationOptions)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<TResult>)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<TResult>, CancellationToken)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Erstellt und startet eine Aufgabe.Creates and starts a task.

StartNew(Func<TResult>, TaskCreationOptions)

Erstellt und startet eine Aufgabe.Creates and starts a task.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Applies to

Thread Safety

Alle öffentlichen und geschützten Member von TaskFactory<TResult> sind Thread sicher und können gleichzeitig von mehreren Threads verwendet werden.All public and protected members of TaskFactory<TResult> are thread-safe and may be used concurrently from multiple threads.

See also