Task<TResult> Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
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
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
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.