Freigeben über


DataReaderExtensions.GetFieldValueAsync<T> Methode

Definition

Ruft den Wert der angegebenen Spalte asynchron als angeforderten Typ ab.

public static System.Threading.Tasks.Task<T> GetFieldValueAsync<T> (this System.Data.Common.DbDataReader reader, string name, System.Threading.CancellationToken cancellationToken = default);
static member GetFieldValueAsync : System.Data.Common.DbDataReader * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
<Extension()>
Public Function GetFieldValueAsync(Of T) (reader As DbDataReader, name As String, Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Typparameter

T

Der Typ des zurückzugebenden Werts.

Parameter

reader
DbDataReader

Der Datenreader, bei dem der Spaltenwert abgerufen werden soll.

name
String

Der Name der Spalte.

cancellationToken
CancellationToken

Ein optionales Token zum Abbrechen des asynchronen Vorgangs.

Gibt zurück

Task<T>

Eine Aufgabe, deren Result den Wert der angegebenen Spalte enthält.

Ausnahmen

Die Verbindung wurde während des Datenabrufs gelöscht oder geschlossen.

- oder -

Der Datenreader wurde während des Datenabrufs geschlossen.

- oder -

Es sind keine Daten zum Lesen vorhanden (beispielsweise wurde der erste Read() nicht aufgerufen oder hat false zurückgegeben).

- oder -

Es wurde versucht, eine zuvor gelesene Spalte im sequenziellen Modus zu lesen.

- oder -

Es gab einen aktiven asynchronen Vorgang. Dies gilt für alle Get_*_-Methoden bei der Ausführung im sequenziellen Modus, da sie während des Lesens eines Datenstroms aufgerufen werden können.

Der angegebene Name ist kein gültiger Spaltenname.

Der von der Datenbank zurückgegebene Wert passt nicht oder kann nicht in T umgewandelt werden.

Das Abbruchtoken wurde abgebrochen. Diese Ausnahme wird in der zurückgegebenen Aufgabe gespeichert.

Hinweise

Diese asynchrone Methode ist nur erforderlich, um das Blockieren des aufrufenden Threads zu vermeiden, wenn der Leser im sequenziellen Modus erstellt wird.

Wenn der sequenzielle Modus nicht angegeben ist, sollten alle Spaltenwerte jedes Mal im Arbeitsspeicher verfügbar werden, wenn ReadAsync abgeschlossen wird, und das Aufrufen der synchronen Version der Methode sollte den aufrufenden Thread nicht blockieren.

Die Standardimplementierung dieser asynchronen Methode ruft ihre synchrone Entsprechung auf und gibt einen abgeschlossenen Task zurück, der möglicherweise den aufrufenden Thread blockiert. Die Standardimplementierung gibt auch einen abgebrochenen Task zurück, wenn ein bereits abgebrochenes Abbruchtoken übergeben wurde.

Datenanbieter, die asynchrone Programmierung unterstützen, sollten die Standardimplementierung mithilfe asynchroner E/A-Vorgänge außer Kraft setzen.

Diese Methode nimmt ein Abbruchtoken an, das verwendet werden kann, um ein frühes Abbrechen des Vorgangs anzufordern. Implementierungen können diese Anforderung ignorieren.

Andere Methoden und Eigenschaften des DbDataReader-Objekts sollten nicht aufgerufen werden, während die zurückgegebene Aufgabe noch nicht abgeschlossen ist.

Gilt für: