Task<TResult> Klas
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.
Vertegenwoordigt een asynchrone bewerking die een waarde kan retourneren.
generic <typename TResult>
public ref class Task : System::Threading::Tasks::Task
public class Task<TResult> : System.Threading.Tasks.Task
type Task<'Result> = class
inherit Task
Public Class Task(Of TResult)
Inherits Task
Type parameters
- TResult
Het type van het resultaat dat door dit Task<TResult>wordt geproduceerd .
- Overname
Opmerkingen
De Task<TResult> klasse vertegenwoordigt één bewerking die een waarde retourneert en die meestal asynchroon wordt uitgevoerd. Task<TResult> objecten zijn een van de centrale onderdelen van het op taken gebaseerde asynchrone patroon dat voor het eerst is geïntroduceerd in .NET Framework 4. Omdat het werk dat door een Task<TResult> object wordt uitgevoerd, doorgaans asynchroon wordt uitgevoerd op een thread in een thread-pool in plaats van synchroon op de hoofdtoepassingsthread, kunt u de Status eigenschap, evenals de IsCanceled, IsCompleted en IsFaulted eigenschappen, gebruiken om de status van een task te bepalen. Meestal wordt een lambda-expressie gebruikt om het werk op te geven dat de taak moet uitvoeren.
Task<TResult> exemplaren kunnen op verschillende manieren worden gemaakt. De meest voorkomende benadering, die vanaf .NET Framework 4.5 beschikbaar is, is het aanroepen van de statische Task.Run<TResult>(Func<TResult>) of Task.Run<TResult>(Func<TResult>, CancellationToken) methode. Deze methoden bieden een eenvoudige manier om een taak te starten met behulp van standaardwaarden en zonder extra parameters te verkrijgen. In het volgende voorbeeld wordt de Task.Run<TResult>(Func<TResult>) methode gebruikt om een taak te starten die wordt herhaald en vervolgens het aantal lusiteraties weer te geven:
using System;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var t = Task<int>.Run( () => {
// Just loop.
int max = 1000000;
int ctr = 0;
for (ctr = 0; ctr <= max; ctr++) {
if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
ctr++;
break;
}
}
return ctr;
} );
Console.WriteLine("Finished {0:N0} iterations.", t.Result);
}
}
// The example displays output like the following:
// Finished 1,000,001 loop iterations.
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim t As Task(Of Integer) = Task.Run(Function()
Dim max As Integer = 1000000
Dim ctr As Integer
For ctr = 0 to max
If ctr = max \ 2 And Date.Now.Hour <= 12 Then
ctr += 1
Exit For
End If
Next
Return ctr
End Function)
Console.WriteLine("Finished {0:N0} iterations.", t.Result)
End Sub
End Module
' The example displays the following output:
' Finished 1,000,001 loop iterations
Een alternatief en de meest voorkomende manier om een taak te starten in .NET Framework 4, is het aanroepen van de statische TaskFactory.StartNew of TaskFactory<TResult>.StartNew methode. De Task.Factory eigenschap retourneert een TaskFactory object en de Task<TResult>.Factory eigenschap retourneert een TaskFactory<TResult> object. Met overbelaste methoden kunt u argumenten doorgeven, opties voor het maken van StartNew taken definiëren en een taakplanner opgeven. In het volgende voorbeeld wordt de TaskFactory<TResult>.StartNew(Func<TResult>) methode gebruikt om een taak te starten. Het is functioneel gelijk aan de code in het vorige voorbeeld.
using System;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var t = Task<int>.Factory.StartNew( () => {
// Just loop.
int max = 1000000;
int ctr = 0;
for (ctr = 0; ctr <= max; ctr++) {
if (ctr == max / 2 && DateTime.Now.Hour <= 12) {
ctr++;
break;
}
}
return ctr;
} );
Console.WriteLine("Finished {0:N0} iterations.", t.Result);
}
}
// The example displays the following output:
// Finished 1000001 loop iterations
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim t = Task(Of Integer).Factory.StartNew(Function()
Dim max As Integer = 1000000
Dim ctr As Integer
For ctr = 0 to max
If ctr = max \ 2 And Date.Now.Hour <= 12 Then
ctr += 1
Exit For
End If
Next
Return ctr
End Function)
Console.WriteLine("Finished {0:N0} iterations.", t.Result)
End Sub
End Module
' The example displays output like the following:
' Finished 1,000,001 iterations
Zie Asynchrone programmering op basis van taken voor meer volledige voorbeelden.
De Task<TResult> klasse biedt ook constructors die de taak initialiseren, maar die deze niet plannen voor uitvoering. Om prestatieredenen zijn de Task.Run en Task.Factory.StartNew methoden de voorkeursmechanismen voor het maken en plannen van rekentaken, maar voor scenario's waarin het maken en plannen van taken moet worden gescheiden, kunnen de constructors worden gebruikt en kan de methode van Start de taak vervolgens worden gebruikt om de taak op een later tijdstip te plannen voor uitvoering.
Vanaf desktop-apps die zich richten op .NET Framework 4.6, wordt de cultuur van de thread die een taak maakt en aanroept, onderdeel van de context van de thread. Ongeacht de huidige cultuur van de thread waarop de taak wordt uitgevoerd, is de cultuur van de taak de cultuur van de aanroepende thread. Voor apps die gericht zijn op versies van .NET Framework vóór .NET Framework 4.6, is de cultuur van de taak de cultuur van de thread waarop de taak wordt uitgevoerd. Zie de sectie 'Asynchrone bewerkingen op basis van cultuur en taken' in het CultureInfo onderwerp voor meer informatie. Houd er rekening mee dat Store-apps de Windows Runtime volgen bij het instellen en ophalen van de standaardcultuur.
Voor bewerkingen die geen waarde retourneren, gebruikt u de Task klasse. Vanaf C# 7.0 gebruikt u de System.Threading.Tasks.ValueTask<TResult> structuur voor een lichtgewicht taak die een waardetype is in plaats van een verwijzingstype.
Constructors
Eigenschappen
| Name | Description |
|---|---|
| AsyncState |
Hiermee wordt het statusobject opgehaald dat is opgegeven tijdens het Task maken of null als er geen is opgegeven. (Overgenomen van Task) |
| CreationOptions |
Hiermee haalt u de TaskCreationOptions gebruikte gegevens op om deze taak te maken. (Overgenomen van Task) |
| Exception |
Hiermee haalt u de AggregateException oorzaak van de Task voortijdige beëindiging op. Als de Task voltooide bewerking is voltooid of nog geen uitzonderingen heeft gegenereerd, wordt dit geretourneerd |
| Factory |
Hiermee haalt u een factorymethode op voor het maken en configureren van Task<TResult> exemplaren. |
| Id |
Hiermee haalt u een id voor dit Task exemplaar op. (Overgenomen van Task) |
| IsCanceled |
Hiermee wordt aangegeven of deze Task instantie de uitvoering heeft voltooid omdat deze is geannuleerd. (Overgenomen van Task) |
| IsCompleted |
Hiermee wordt een waarde opgehaald die aangeeft of de taak is voltooid. (Overgenomen van Task) |
| IsCompletedSuccessfully |
Hiermee wordt aangegeven of de taak is voltooid. (Overgenomen van Task) |
| IsFaulted |
Hiermee wordt aangegeven of de Task voltooide bewerking is veroorzaakt door een niet-verwerkte uitzondering. (Overgenomen van Task) |
| Result |
Hiermee haalt u de resultaatwaarde van deze Task<TResult>op. |
| Status |
Hiermee haalt u de TaskStatus taak op. (Overgenomen van Task) |
Methoden
| Name | Description |
|---|---|
| ConfigureAwait(Boolean) |
Hiermee configureert u een wachter die wordt gebruikt om dit Task<TResult>te wachten. |
| ConfigureAwait(ConfigureAwaitOptions) |
Hiermee configureert u een wachter die wordt gebruikt om dit Taskte wachten. |
| ContinueWith(Action<Task,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg die door de aanroeper verstrekte statusinformatie en een annuleringstoken ontvangt en dat wordt uitgevoerd wanneer het doel Task is voltooid. De voortzetting wordt uitgevoerd op basis van een set opgegeven voorwaarden en maakt gebruik van een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith(Action<Task,Object>, Object, CancellationToken) |
Hiermee maakt u een vervolg dat door de aanroeper verstrekte statusinformatie en een annuleringstoken ontvangt en dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. (Overgenomen van Task) |
| ContinueWith(Action<Task,Object>, Object, TaskContinuationOptions) |
Hiermee maakt u een vervolg die door de aanroeper verstrekte statusinformatie ontvangt en wordt uitgevoerd wanneer het doel Task is voltooid. De voortzetting wordt uitgevoerd op basis van een set opgegeven voorwaarden. (Overgenomen van Task) |
| ContinueWith(Action<Task,Object>, Object, TaskScheduler) |
Hiermee maakt u een vervolg dat door de aanroeper verstrekte statusinformatie ontvangt en asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. De voortzetting maakt gebruik van een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith(Action<Task,Object>, Object) |
Hiermee maakt u een vervolg die door de aanroeper verstrekte statusinformatie ontvangt en wordt uitgevoerd wanneer het doel Task is voltooid. (Overgenomen van Task) |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>,Object>, Object, CancellationToken) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskContinuationOptions) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>,Object>, Object, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>,Object>, Object) |
Hiermee maakt u een vervolg dat statusinformatie doorgeeft en die wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd volgens de voorwaarde die is opgegeven in |
| ContinueWith(Action<Task<TResult>>, CancellationToken) |
Hiermee maakt u een geannuleerde vervolg die asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>>, TaskContinuationOptions) |
Hiermee maakt u een vervolg dat wordt uitgevoerd volgens de voorwaarde die is opgegeven in |
| ContinueWith(Action<Task<TResult>>, TaskScheduler) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith(Action<Task<TResult>>) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer de doeltaak is voltooid. |
| ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg die wordt uitgevoerd wanneer de doeltaak concurreert op basis van de opgegeven TaskContinuationOptions. De voortzetting ontvangt een annuleringstoken en gebruikt een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith(Action<Task>, CancellationToken) |
Hiermee maakt u een vervolg dat een annuleringstoken ontvangt en asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. (Overgenomen van Task) |
| ContinueWith(Action<Task>, TaskContinuationOptions) |
Hiermee maakt u een vervolg die wordt uitgevoerd wanneer de doeltaak wordt voltooid volgens de opgegeven TaskContinuationOptions. (Overgenomen van Task) |
| ContinueWith(Action<Task>, TaskScheduler) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. De voortzetting maakt gebruik van een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith(Action<Task>) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. (Overgenomen van Task) |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, CancellationToken) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskContinuationOptions) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,Object,TNewResult>, Object) |
Hiermee maakt u een vervolg dat wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg dat wordt uitgevoerd volgens de voorwaarde die is opgegeven in |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, CancellationToken) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskContinuationOptions) |
Hiermee maakt u een vervolg dat wordt uitgevoerd volgens de voorwaarde die is opgegeven in |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>, TaskScheduler) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TNewResult>(Func<Task<TResult>,TNewResult>) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid. |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg die wordt uitgevoerd op basis van de opgegeven opties voor taakvervolging wanneer het doel Task is voltooid en een waarde retourneert. De voortzetting ontvangt door de beller verstrekte statusinformatie en een annuleringstoken en gebruikt de opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, CancellationToken) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid en een waarde retourneert. De voortzetting ontvangt door de beller verstrekte statusinformatie en een annuleringstoken. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskContinuationOptions) |
Hiermee maakt u een vervolg die wordt uitgevoerd op basis van de opgegeven opties voor taakvervolging wanneer het doel Task is voltooid. De voortzetting ontvangt door de beller verstrekte statusinformatie. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object, TaskScheduler) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid. De voortzetting ontvangt door de beller verstrekte statusinformatie en gebruikt een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,Object,TResult>, Object) |
Hiermee maakt u een vervolg dat door de aanroeper verstrekte statusinformatie ontvangt en asynchroon wordt uitgevoerd wanneer het doel Task is voltooid en een waarde retourneert. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler) |
Hiermee maakt u een vervolg die wordt uitgevoerd op basis van de opgegeven vervolgopties en retourneert een waarde. De voortzetting wordt doorgegeven aan een annuleringstoken en maakt gebruik van een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,TResult>, CancellationToken) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid en een waarde retourneert. De voortzetting ontvangt een annuleringstoken. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskContinuationOptions) |
Hiermee maakt u een vervolg die wordt uitgevoerd op basis van de opgegeven vervolgopties en retourneert een waarde. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,TResult>, TaskScheduler) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task is voltooid en een waarde retourneert. De voortzetting maakt gebruik van een opgegeven scheduler. (Overgenomen van Task) |
| ContinueWith<TResult>(Func<Task,TResult>) |
Hiermee maakt u een vervolg dat asynchroon wordt uitgevoerd wanneer het doel Task<TResult> is voltooid en een waarde retourneert. (Overgenomen van Task) |
| Dispose() |
Alle resources die door het huidige exemplaar van de Task klasse worden gebruikt, worden vrijgegeven. (Overgenomen van Task) |
| Dispose(Boolean) |
Hiermee verwijdert u alle Taskonbeheerde resources. (Overgenomen van Task) |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetAwaiter() |
Krijgt een wachter gebruikt om dit Task<TResult>te wachten. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| RunSynchronously() |
Hiermee wordt de Task synchrone uitvoering uitgevoerd op de huidige TaskScheduler. (Overgenomen van Task) |
| RunSynchronously(TaskScheduler) |
Hiermee wordt de Task synchrone uitvoering uitgevoerd op de TaskScheduler opgegeven. (Overgenomen van Task) |
| Start() |
Hiermee start u de Taskplanning voor uitvoering naar de huidige TaskScheduler. (Overgenomen van Task) |
| Start(TaskScheduler) |
Hiermee start u de Task, planning voor uitvoering naar de opgegeven TaskScheduler. (Overgenomen van Task) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| Wait() |
Wacht totdat de Task uitvoering is voltooid. (Overgenomen van Task) |
| Wait(CancellationToken) |
Wacht totdat de Task uitvoering is voltooid. De wachttijd wordt beëindigd als een annuleringstoken wordt geannuleerd voordat de taak is voltooid. (Overgenomen van Task) |
| Wait(Int32, CancellationToken) |
Wacht totdat de Task uitvoering is voltooid. De wachttijd wordt beëindigd als een time-outinterval is verstreken of een annuleringstoken wordt geannuleerd voordat de taak is voltooid. (Overgenomen van Task) |
| Wait(Int32) |
Wacht totdat de Task uitvoering binnen een opgegeven aantal milliseconden is voltooid. (Overgenomen van Task) |
| Wait(TimeSpan, CancellationToken) |
Wacht totdat de Task uitvoering is voltooid. (Overgenomen van Task) |
| Wait(TimeSpan) |
Wacht totdat de Task uitvoering binnen een opgegeven tijdsinterval is voltooid. (Overgenomen van Task) |
| WaitAsync(CancellationToken) |
Hiermee haalt u een Task<TResult> bewerking op die wordt voltooid wanneer dit Task<TResult> is voltooid of wanneer de opgegeven CancellationToken annulering heeft aangevraagd. |
| WaitAsync(TimeSpan, CancellationToken) |
Hiermee haalt u een Task<TResult> bewerking op die wordt voltooid wanneer dit Task<TResult> is voltooid, wanneer de opgegeven time-out verloopt of wanneer de opgegeven CancellationToken annulering heeft aangevraagd. |
| WaitAsync(TimeSpan, TimeProvider, CancellationToken) |
Hiermee haalt u een Task<TResult> bewerking op die wordt voltooid wanneer dit Task<TResult> is voltooid, wanneer de opgegeven time-out verloopt of wanneer de opgegeven CancellationToken annulering heeft aangevraagd. |
| WaitAsync(TimeSpan, TimeProvider) |
Hiermee wordt een Task<TResult> bewerking uitgevoerd wanneer dit Task<TResult> is voltooid of wanneer de opgegeven time-out verloopt. |
| WaitAsync(TimeSpan) |
Hiermee wordt een Task<TResult> bewerking uitgevoerd wanneer dit Task<TResult> is voltooid of wanneer de opgegeven time-out verloopt. |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| IAsyncResult.AsyncWaitHandle |
Hiermee haalt u een WaitHandle op die kan worden gebruikt om te wachten totdat de taak is voltooid. (Overgenomen van Task) |
| IAsyncResult.CompletedSynchronously |
Hiermee wordt aangegeven of de bewerking synchroon is voltooid. (Overgenomen van Task) |
Extensiemethoden
| Name | Description |
|---|---|
| AsAsyncAction(Task) |
Retourneert een Windows Runtime asynchrone actie die een gestarte taak vertegenwoordigt. |
| AsAsyncOperation<TResult>(Task<TResult>) |
Retourneert een Windows Runtime asynchrone bewerking die een gestarte taak vertegenwoordigt die een resultaat retourneert. |
| DispatcherOperationWait(Task, TimeSpan) |
Wacht tot de opgegeven tijdsduur is DispatcherOperation voltooid. |
| DispatcherOperationWait(Task) |
Wacht voor onbepaalde tijd totdat de onderliggende DispatcherOperation waarde is voltooid. |
| IsDispatcherOperationTask(Task) |
Retourneert een waarde die aangeeft of dit Task is gekoppeld aan een DispatcherOperation. |
Van toepassing op
Veiligheid thread
Alle leden van, met uitzondering Task<TResult>vanDispose(), zijn thread-veilig en kunnen gelijktijdig worden gebruikt vanuit meerdere threads.