Task<TResult> Konstruktoren

Definition

Initialisiert ein neues Task<TResult> Objekt.

Überlädt

Name Beschreibung
Task<TResult>(Func<TResult>)

Initialisiert ein neues Task<TResult> mit der angegebenen Funktion.

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

Initialisiert ein neues Task<TResult> mit der angegebenen Funktion und dem angegebenen Zustand.

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

Initialisiert ein neues Task<TResult> mit der angegebenen Funktion.

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

Initialisiert ein neues Task<TResult> mit den angegebenen Funktionen und Erstellungsoptionen.

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

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den Optionen.

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

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den Optionen.

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

Initialisiert ein neues Task<TResult> mit den angegebenen Funktionen und Erstellungsoptionen.

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

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den Optionen.

Task<TResult>(Func<TResult>)

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

Ausnahmen

Das function Argument ist null.

Das function Argument ist 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 der einzelnen Bücher 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 sie dies nicht tun, wird der Name der fehlenden Datei angezeigt. Andernfalls wird die Task.Start Methode aufgerufen, 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 \p{P}*\s+ für reguläre Ausdrücke entspricht null, ein oder mehrere Interpunktionszeichen gefolgt von mindestens einem Leerzeichen. Es wird davon ausgegangen, dass die Gesamtanzahl der Übereinstimmungen der ungefähren Wortanzahl entspricht.

Hinweise

Dieser Konstruktor sollte nur in erweiterten Szenarien verwendet werden, in denen es erforderlich ist, dass das Erstellen und Starten der Aufgabe getrennt ist.

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statischen Task.Run<TResult>(Func<TResult>) Und TaskFactory<TResult>.StartNew(Func<TResult>) Methoden aufzurufen.

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.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit der angegebenen Funktion und dem angegebenen 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

state
Object

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

Ausnahmen

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

cancellationToken
CancellationToken

Der CancellationToken dieser Aufgabe zugewiesen werden soll.

Ausnahmen

Die CancellationTokenSource erstellte Datei cancellationToken wurde bereits gelöscht.

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statischen Task.Run<TResult>(Func<TResult>, CancellationToken) Und TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) Methoden aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit den angegebenen Funktionen 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

creationOptions
TaskCreationOptions

Wird TaskCreationOptions verwendet, um das Verhalten der Aufgabe anzupassen.

Ausnahmen

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

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

state
Object

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

cancellationToken
CancellationToken

Der CancellationToken dem neuen Vorgang zugewiesen werden soll.

Ausnahmen

Die CancellationTokenSource erstellte Datei cancellationToken wurde bereits gelöscht.

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

state
Object

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

creationOptions
TaskCreationOptions

Wird TaskCreationOptions verwendet, um das Verhalten der Aufgabe anzupassen.

Ausnahmen

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

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit den angegebenen Funktionen 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

cancellationToken
CancellationToken

Das CancellationToken wird der neuen Aufgabe zugewiesen.

creationOptions
TaskCreationOptions

Wird TaskCreationOptions verwendet, um das Verhalten der Aufgabe anzupassen.

Ausnahmen

Die CancellationTokenSource erstellte Datei cancellationToken wurde bereits gelöscht.

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

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für:

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

Quelle:
Future.cs
Quelle:
Task_T.cs
Quelle:
Future.cs
Quelle:
Future.cs
Quelle:
Future.cs

Initialisiert ein neues Task<TResult> mit der angegebenen Aktion, dem angegebenen Zustand und den 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 Code darstellt, der in der Aufgabe ausgeführt werden soll. Wenn die Funktion abgeschlossen ist, wird die Eigenschaft des Vorgangs Result so festgelegt, dass der Ergebniswert der Funktion zurückgegeben wird.

state
Object

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

cancellationToken
CancellationToken

Der CancellationToken dem neuen Vorgang zugewiesen werden soll.

creationOptions
TaskCreationOptions

Wird TaskCreationOptions verwendet, um das Verhalten der Aufgabe anzupassen.

Ausnahmen

Die CancellationTokenSource erstellte Datei cancellationToken wurde bereits gelöscht.

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

Das function Argument ist null.

Das function Argument ist null.

Hinweise

Anstatt diesen Konstruktor aufzurufen, besteht die am häufigsten verwendete Methode zum Instanziieren eines Task<TResult> Objekts und starten einer Aufgabe darin, die statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) Methode aufzurufen. Der einzige Vorteil dieses Konstruktors besteht darin, dass die Objektinstanziierung von einem Vorgangsaufruf getrennt werden kann.

Weitere Informationen

Gilt für: