ValueTask Struct

Definitie

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
ValueTask
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.

Van toepassing op