DataReaderExtensions.GetFieldValueAsync<T> メソッド

定義

指定した列の値を要求された型として非同期的に取得します。

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)

型パラメーター

T

返される値の型。

パラメーター

reader
DbDataReader

列の値を取得するデータ リーダー。

name
String

列の名前。

cancellationToken
CancellationToken

非同期操作を取り消す省略可能なトークン。

返品

Task<T>

指定した列の値が Result に含まれるタスク。

例外

データの取得中に接続が切断または閉じられました。

-または-

データリーダーは、データの取得中に閉じられました。

-または-

読み取る準備ができているデータがありません (たとえば、最初の Read() が呼び出されていないか、 false返されます)。

-または-

シーケンシャル モードで以前に読み取った列を読み取ろうとしました。

-または-

非同期操作が進行中でした。 これは、ストリームの読み取り中に呼び出すことができるため、シーケンシャル モードで実行する場合は、すべてのGet_*_ メソッドに適用されます。

指定された名前が有効な列名ではありません。

データベースによって返される値が一致しないか、 Tにキャストできません。

キャンセル トークンが取り消されました。 この例外は、返されたタスクに格納されます。

注釈

この非同期メソッドは、リーダーがシーケンシャル モードで作成されるときに呼び出し元のスレッドがブロックされないようにするためにのみ必要です。

シーケンシャル モードが指定されていない場合、ReadAsync が完了するたびにすべての列値がメモリ内で使用可能になり、メソッドの同期バージョンを呼び出しても呼び出し元のスレッドはブロックされません。

この非同期メソッドの既定の実装では、対応する同期メソッドが呼び出され、完了した Task が返され、呼び出し元のスレッドがブロックされる可能性があります。 既定の実装では、既に取り消されたキャンセル トークンが渡された場合、取り消されたタスクも返されます。

非同期プログラミングをサポートするデータ プロバイダーは、非同期 I/O 操作を使用して既定のインプルメントをオーバーライドする必要があります。

このメソッドは、早期に取り消す操作を要求するために使用できるキャンセル トークンを受け入れます。 実装では、この要求は無視される場合があります。

返された Task がまだ完了していない間は、DbDataReader オブジェクトの他のメソッドとプロパティを呼び出さないでください。

適用対象