Task<TResult> Constructors
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Initialiseert een nieuw Task<TResult> object.
Overloads
Task<TResult>(Func<TResult>)
Initialiseert een nieuwe Task<TResult> met de opgegeven functie.
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))
Parameters
- function
- Func<TResult>
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
Uitzonderingen
Het function argument is null.
Het function argument is null.
Voorbeelden
In het volgende voorbeeld wordt het geschatte aantal woorden in tekstbestanden geteld dat gepubliceerde boeken vertegenwoordigt. Elke taak is verantwoordelijk voor het openen van een bestand, het asynchroon lezen van de volledige inhoud en het berekenen van het aantal woorden met behulp van een reguliere expressie. De Task.WaitAll(Task[]) methode wordt aangeroepen om ervoor te zorgen dat alle taken zijn voltooid voordat het aantal woorden van elk boek naar de console wordt weergegeven.
Object instantiëring wordt gescheiden van objectuitvoering in dit voorbeeld, zodat het voorbeeld ervoor kan zorgen dat elk bestand bestaat. Als dat niet zo is, wordt de naam van het ontbrekende bestand weergegeven. Anders wordt de Task.Start methode aangeroepen om elke taak te 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
Het reguliere expressiepatroon \p{P}*\s+ komt overeen met nul, één of meer interpunctietekens, gevolgd door een of meer spatietekens. Hierbij wordt ervan uitgegaan dat het totale aantal overeenkomsten gelijk is aan het geschatte aantal woorden.
Opmerkingen
Deze constructor mag alleen worden gebruikt in geavanceerde scenario's waarbij vereist is dat het maken en starten van de taak wordt gescheiden.
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische Task.Run<TResult>(Func<TResult>) en TaskFactory<TResult>.StartNew(Func<TResult>) methoden aan te roepen.
Als een taak zonder actie alleen nodig is voor de consument van een API om iets te wachten, moet een TaskCompletionSource<TResult> taak worden gebruikt.
Zie ook
Van toepassing op
Task<TResult>(Func<Object,TResult>, Object)
Initialiseert een nieuwe Task<TResult> met de opgegeven functie en status.
public:
Task(Func<System::Object ^, TResult> ^ function, System::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)
Parameters
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- state
- Object
Een object dat gegevens vertegenwoordigt die door de actie moeten worden gebruikt.
Uitzonderingen
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<TResult>, CancellationToken)
Initialiseert een nieuwe Task<TResult> met de opgegeven functie.
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)
Parameters
- function
- Func<TResult>
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- cancellationToken
- CancellationToken
De CancellationToken taak die aan deze taak moet worden toegewezen.
Uitzonderingen
De CancellationTokenSource gemaakte cancellationToken is al verwijderd.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische Task.Run<TResult>(Func<TResult>, CancellationToken) en TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) methoden aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<TResult>, TaskCreationOptions)
Initialiseert een nieuwe Task<TResult> met de opgegeven functie en maakopties.
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)
Parameters
- function
- Func<TResult>
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- creationOptions
- TaskCreationOptions
De TaskCreationOptions functie die wordt gebruikt om het gedrag van de taak aan te passen.
Uitzonderingen
Het creationOptions argument geeft een ongeldige waarde voor TaskCreationOptions.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<Object,TResult>, Object, CancellationToken)
Initialiseert een nieuwe Task<TResult> met de opgegeven actie, status en opties.
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);
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)
Parameters
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- state
- Object
Een object dat gegevens vertegenwoordigt die door de functie moeten worden gebruikt.
- cancellationToken
- CancellationToken
De CancellationToken taak die moet worden toegewezen aan de nieuwe taak.
Uitzonderingen
De CancellationTokenSource gemaakte cancellationToken is al verwijderd.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)
Initialiseert een nieuwe Task<TResult> met de opgegeven actie, status en opties.
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);
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)
Parameters
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- state
- Object
Een object dat gegevens vertegenwoordigt die door de functie moeten worden gebruikt.
- creationOptions
- TaskCreationOptions
De TaskCreationOptions functie die wordt gebruikt om het gedrag van de taak aan te passen.
Uitzonderingen
Het creationOptions argument geeft een ongeldige waarde voor TaskCreationOptions.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)
Initialiseert een nieuwe Task<TResult> met de opgegeven functie en maakopties.
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)
Parameters
- function
- Func<TResult>
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- cancellationToken
- CancellationToken
De CancellationToken taak die wordt toegewezen aan de nieuwe taak.
- creationOptions
- TaskCreationOptions
De TaskCreationOptions functie die wordt gebruikt om het gedrag van de taak aan te passen.
Uitzonderingen
De CancellationTokenSource gemaakte cancellationToken is al verwijderd.
Het creationOptions argument geeft een ongeldige waarde voor TaskCreationOptions.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.
Zie ook
Van toepassing op
Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)
Initialiseert een nieuwe Task<TResult> met de opgegeven actie, status en opties.
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);
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)
Parameters
De gemachtigde die de code vertegenwoordigt die moet worden uitgevoerd in de taak. Wanneer de functie is voltooid, wordt de eigenschap van Result de taak ingesteld om de resultaatwaarde van de functie te retourneren.
- state
- Object
Een object dat gegevens vertegenwoordigt die door de functie moeten worden gebruikt.
- cancellationToken
- CancellationToken
De CancellationToken taak die moet worden toegewezen aan de nieuwe taak.
- creationOptions
- TaskCreationOptions
De TaskCreationOptions functie die wordt gebruikt om het gedrag van de taak aan te passen.
Uitzonderingen
De CancellationTokenSource gemaakte cancellationToken is al verwijderd.
Het creationOptions argument geeft een ongeldige waarde voor TaskCreationOptions.
Het function argument is null.
Het function argument is null.
Opmerkingen
In plaats van deze constructor aan te roepen, is de meest voorkomende manier om een Task<TResult> object te instantiëren en een taak te starten door de statische TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) methode aan te roepen. Het enige voordeel dat door deze constructor wordt geboden, is dat object-instantiëring kan worden gescheiden van aanroepen van taken.