Teilen über


Task<TResult> Konstruktoren

Definition

Initialisiert ein neues Task<TResult>-Objekt.

Überlädt

Task<TResult>(Func<TResult>)

Initialisiert einen neuen Task<TResult> mit der angegebenen Funktion.

Task<TResult>(Func<Object,TResult>, Object)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Zustand.

Task<TResult>(Func<TResult>, CancellationToken)

Initialisiert einen neuen Task<TResult> mit der angegebenen Funktion.

Task<TResult>(Func<TResult>, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Erstellungsoptionen.

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

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

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

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Erstellungsoptionen.

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

Task<TResult>(Func<TResult>)

Initialisiert einen neuen Task<TResult> mit der angegebenen Funktion.

public:
 Task(Func<TResult> ^ function);
public Task (Func<TResult> function);
new System.Threading.Tasks.Task<'Result> : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult))

Parameter

function
Func<TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

Ausnahmen

Das function-Argument lautet null.

Das function-Argument lautet null.

Beispiele

Im folgenden Beispiel wird die ungefähre Anzahl von Wörtern in Textdateien gezählt, die veröffentlichte Bücher darstellen. Jede Aufgabe ist dafür verantwortlich, eine Datei zu öffnen, den gesamten Inhalt asynchron zu lesen und die Wortanzahl mithilfe eines regulären Ausdrucks zu berechnen. Die Task.WaitAll(Task[]) Methode wird aufgerufen, um sicherzustellen, dass alle Aufgaben abgeschlossen wurden, bevor die Wortanzahl jedes Buchs in der Konsole angezeigt wird.

Die Objektinstanziierung wird in diesem Beispiel von der Objektausführung getrennt, sodass das Beispiel sicherstellen kann, dass jede Datei vorhanden ist. Wenn dies nicht der Vorgang ist, wird der Name der fehlenden Datei angezeigt. Andernfalls ruft sie die Task.Start Methode auf, um jede Aufgabe zu starten.

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Example
{
   public static async Task Main()
   {
      string pattern = @"\p{P}*\s+";
      string[] titles = { "Sister Carrie", "The Financier" };
      Task<int>[] tasks = new Task<int>[titles.Length];

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = new Task<int>( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";

                                   StreamReader sr = new StreamReader(fn);
                                   string input = sr.ReadToEndAsync().Result;
                                   sr.Close();
                                   nWords = Regex.Matches(input, pattern).Count;
                                   return nWords;
                                } );
      }
      // Ensure files exist before launching tasks.
      bool allExist = true;
      foreach (var title in titles) {
         string fn = title + ".txt";
         if (! File.Exists(fn)) {
            allExist = false;
            Console.WriteLine("Cannot find '{0}'", fn);
            break;
         }   
      }
      // Launch tasks 
      if (allExist) {
         foreach (var t in tasks)
            t.Start();
      
        await Task.WhenAll(tasks);
  
        Console.WriteLine("Word Counts:\n");
        for (int ctr = 0; ctr < titles.Length; ctr++)
           Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
      }   
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim pattern As String = "\p{P}*\s+"
      Dim titles() As String = { "Sister Carrie",
                                 "The Financier" }
      Dim tasks(titles.Length - 1) As Task(Of Integer)

      For ctr As Integer = 0 To titles.Length - 1
         Dim s As String = titles(ctr)
         tasks(ctr) = New Task(Of Integer)( Function()
                                   ' Number of words.
                                   Dim nWords As Integer = 0
                                   ' Create filename from title.
                                   Dim fn As String = s + ".txt"

                                   Dim sr As New StreamReader(fn)
                                   Dim input As String = sr.ReadToEndAsync().Result
                                   sr.Close()
                                   nWords = Regex.Matches(input, pattern).Count
                                   Return nWords
                                End Function)
      Next

      ' Ensure files exist before launching tasks.
      Dim allExist As Boolean = True
      For Each title In titles
         Dim fn As String = title + ".txt"
         If Not File.Exists(fn) Then
            allExist = false
            Console.WriteLine("Cannot find '{0}'", fn)
            Exit For
         End If   
      Next
      ' Launch tasks 
      If allExist Then
         For Each t in tasks
            t.Start()
         Next
         Task.WaitAll(tasks)

         Console.WriteLine("Word Counts:")
         Console.WriteLine()
         For ctr As Integer = 0 To titles.Length - 1
         Console.WriteLine("{0}: {1,10:N0} words", titles(ctr), tasks(ctr).Result)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Sister Carrie:    159,374 words
'       The Financier:    196,362 words

Das Muster für reguläre Ausdrücke \p{P}*\s+ entspricht null, ein oder mehrere Interpunktionszeichen gefolgt von einem oder mehreren Leerzeichen. Es wird davon ausgegangen, dass die Gesamtzahl der Übereinstimmungen der ungefähren Wortanzahl entspricht.

Hinweise

Dieser Konstruktor sollte nur in erweiterten Szenarien verwendet werden, in denen es erforderlich ist, dass die Erstellung und der Start der Aufgabe getrennt sind.

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen Task.Run<TResult>(Func<TResult>) und TaskFactory<TResult>.StartNew(Func<TResult>) Methoden verwendet.

Wenn eine Aufgabe ohne Aktion nur für den Verbraucher einer API benötigt wird, um etwas zu erwarten, sollte eine TaskCompletionSource<TResult> verwendet werden.

Siehe auch

Gilt für

Task<TResult>(Func<Object,TResult>, Object)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Zustand.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public Task (Func<object,TResult> function, object state);
public Task (Func<object?,TResult> function, object? state);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object)

Parameter

function
Func<Object,TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

state
Object

Ein Objekt, das Daten darstellt, die von der Aktion verwendet werden sollen.

Ausnahmen

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von vorgangsaufrufen getrennt werden kann.

Siehe auch

Gilt für

Task<TResult>(Func<TResult>, CancellationToken)

Initialisiert einen neuen Task<TResult> mit der angegebenen Funktion.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken)

Parameter

function
Func<TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

cancellationToken
CancellationToken

Das CancellationToken, das dieser Aufgabe zugewiesen werden soll.

Ausnahmen

Die CancellationTokenSource, die cancellationToken erstellt hat, wurde bereits freigegeben.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen Task.Run<TResult>(Func<TResult>, CancellationToken) und TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) Methoden verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von vorgangsaufrufen getrennt werden kann.

Siehe auch

Gilt für

Task<TResult>(Func<TResult>, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Erstellungsoptionen.

public:
 Task(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), creationOptions As TaskCreationOptions)

Parameter

function
Func<TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

creationOptions
TaskCreationOptions

Die TaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.

Ausnahmen

Das creationOptions-Argument gibt einen ungültigen Wert für TaskCreationOptions an.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von vorgangsaufrufen getrennt werden kann.

Siehe auch

Gilt für

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

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken)

Parameter

function
Func<Object,TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

state
Object

Ein Objekt, das Daten darstellt, die von der Funktion verwendet werden sollen.

cancellationToken
CancellationToken

Das CancellationToken, das dieser neuen Aufgabe zugewiesen werden soll.

Ausnahmen

Die CancellationTokenSource, die cancellationToken erstellt hat, wurde bereits freigegeben.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von vorgangsaufrufen getrennt werden kann.

Siehe auch

Gilt für

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

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, creationOptions As TaskCreationOptions)

Parameter

function
Func<Object,TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

state
Object

Ein Objekt, das Daten darstellt, die von der Funktion verwendet werden sollen.

creationOptions
TaskCreationOptions

Die TaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.

Ausnahmen

Das creationOptions-Argument gibt einen ungültigen Wert für TaskCreationOptions an.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und zum Starten einer Aufgabe durch Aufrufen der statischen TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von vorgangsaufrufen getrennt werden kann.

Siehe auch

Gilt für

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Funktion und Erstellungsoptionen.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Parameter

function
Func<TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

cancellationToken
CancellationToken

Das CancellationToken, das der neuen Aufgabe zugewiesen wird.

creationOptions
TaskCreationOptions

Die TaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.

Ausnahmen

Die CancellationTokenSource, die cancellationToken erstellt hat, wurde bereits freigegeben.

Das creationOptions-Argument gibt einen ungültigen Wert für TaskCreationOptions an.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Objekts und zum Starten einer Task<TResult> Aufgabe durch Aufrufen der statischen TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von Vorgangsberufen getrennt werden kann.

Siehe auch

Gilt für

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Initialisiert einen neuen Task<TResult> mit den angegebenen Werten für Aktion, Zustand und Optionen.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Parameter

function
Func<Object,TResult>

Der Delegat, der den in der Aufgabe auszuführenden Code darstellt. Nachdem die Funktion abgeschlossen wurde, wird die Result-Eigenschaft der Aufgabe festgelegt, um den Ergebniswert der Funktion zurückzugeben.

state
Object

Ein Objekt, das Daten darstellt, die von der Funktion verwendet werden sollen.

cancellationToken
CancellationToken

Das CancellationToken, das dieser neuen Aufgabe zugewiesen werden soll.

creationOptions
TaskCreationOptions

Die TaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.

Ausnahmen

Die CancellationTokenSource, die cancellationToken erstellt hat, wurde bereits freigegeben.

Das creationOptions-Argument gibt einen ungültigen Wert für TaskCreationOptions an.

Das function-Argument lautet null.

Das function-Argument lautet null.

Hinweise

Anstatt diesen Konstruktor zu aufrufen, wird die am häufigsten verwendete Methode zum Instanziieren eines Objekts und zum Starten einer Task<TResult> Aufgabe durch Aufrufen der statischen TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) Methode verwendet. Der einzige Vorteil, der von diesem Konstruktor angeboten wird, besteht darin, dass die Objektinstanziierung von Vorgangsberufen getrennt werden kann.

Siehe auch

Gilt für