ValueTask Struct
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.
Biedt een wachtbaar resultaat van een asynchrone bewerking.
public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public readonly struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
- Overname
- Implementeringen
Opmerkingen
Een ValueTask exemplaar kan worden gewacht of geconverteerd naar een Task using AsTask. Een ValueTask exemplaar kan slechts eenmaal worden gewacht en consumenten kunnen pas aanroepen GetAwaiter() als het exemplaar is voltooid. Als deze beperkingen onaanvaardbaar zijn, converteert u de ValueTask naar een Task door te bellen AsTask.
De volgende bewerkingen mogen nooit worden uitgevoerd op een ValueTask exemplaar:
- Wacht meerdere keren op het exemplaar.
- Meerdere keren bellen AsTask .
- Gebruik meer dan een van deze technieken om het exemplaar te gebruiken.
Als u een van de bovenstaande handelingen uitvoert, zijn de resultaten niet gedefinieerd.
Een ValueTask is een structuur die een Task of een IValueTaskSource exemplaar kan verpakken. Als u een ValueTaskIValueTaskSource exemplaar retourneert van een asynchrone methode, kunnen toepassingen met hoge doorvoer toewijzingen voorkomen met behulp van een pool herbruikbare IValueTaskSource objecten. Zie Understanding the Whys, Whats, and when's of ValueTask (Whys, Whats, and when's of ValueTask) voor meer informatie.
Het gebruik van een ValueTask in plaats van een Task overhead introduceert wat overhead. Omdat ValueTask dit een structuur is met meerdere velden, resulteert het retourneren uit de methode in het kopiëren van meer gegevens in vergelijking met het retourneren van één Task verwijzing. Als zodanig moet de standaardoptie voor een asynchrone methode die geen resultaat retourneert een Task. Alleen als prestatieanalyse bewijst dat het de moeite waard is om een ValueTask te gebruiken in plaats van een Task. De Task.CompletedTask eigenschap moet worden gebruikt om een voltooide singleton terug te geven in het geval dat een methode die een Task synchroon en succesvol retourneert, wordt voltooid.
Note
Het gebruik van het type ValueTask wordt ondersteund vanaf C# 7.0 en wordt niet ondersteund door een versie van Visual Basic.
Note
Een exemplaar dat is gemaakt met de parameterloze constructor of door de default(ValueTask) syntaxis (een structuur zonder initialisatie) vertegenwoordigt een synchrone, voltooide bewerking.
Constructors
| Name | Description |
|---|---|
| ValueTask(IValueTaskSource, Int16) |
Initialiseert een nieuw exemplaar van de ValueTask klasse met behulp van het opgegeven IValueTaskSource object dat de bewerking vertegenwoordigt. |
| ValueTask(Task) |
Initialiseert een nieuw exemplaar van de ValueTask klasse met behulp van de opgegeven taak die de bewerking vertegenwoordigt. |
Eigenschappen
| Name | Description |
|---|---|
| IsCanceled |
Hiermee wordt een waarde opgehaald die aangeeft of dit object een geannuleerde bewerking vertegenwoordigt. |
| IsCompleted |
Hiermee wordt een waarde opgehaald die aangeeft of dit object een voltooide bewerking vertegenwoordigt. |
| IsCompletedSuccessfully |
Hiermee wordt een waarde opgehaald die aangeeft of dit object een voltooide bewerking vertegenwoordigt. |
| IsFaulted |
Hiermee wordt een waarde opgehaald die aangeeft of dit object een mislukte bewerking vertegenwoordigt. |
Methoden
| Name | Description |
|---|---|
| AsTask() |
Hiermee haalt u een Task object op dat dit ValueTaskvoorstelt. |
| ConfigureAwait(Boolean) |
Hiermee configureert u een wachter voor deze waarde. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige ValueTask exemplaar. |
| Equals(ValueTask) |
Bepaalt of het opgegeven ValueTask object gelijk is aan het huidige ValueTask object. |
| GetAwaiter() |
Hiermee maakt u een wachter voor deze waarde. |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. |
| Preserve() |
Hiermee haalt u een ValueTask die op elk gewenst moment in de toekomst kan worden gebruikt. |
Operators
| Name | Description |
|---|---|
| Equality(ValueTask, ValueTask) |
Vergelijkt twee ValueTask waarden voor gelijkheid. |
| Inequality(ValueTask, ValueTask) |
Bepaalt of twee ValueTask waarden ongelijk zijn. |