次の方法で共有


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 操作を使用して既定のインプルメントをオーバーライドする必要があります。

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

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

適用対象