DataReaderExtensions.GetFieldValueAsync(DbDataReader, String, CancellationToken) DataReaderExtensions.GetFieldValueAsync(DbDataReader, String, CancellationToken) Method


要求された型として指定された列の値を非同期で取得します。Asynchronously gets the value of the specified column as the requested type.

public static System.Threading.Tasks.Task<T> GetFieldValueAsync<T> (this System.Data.Common.DbDataReader reader, string name, System.Threading.CancellationToken cancellationToken = null);
static member GetFieldValueAsync : System.Data.Common.DbDataReader * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>



返される値の型。The type of the value to be returned.


DbDataReader DbDataReader

列値の取得元となるデータ リーダー。The data reader to get the column value from.

String String

列の名前。The name of the column.

CancellationToken CancellationToken

非同期操作を取り消すオプションのトークン。An optional token to cancel the asynchronous operation.



指定された列の値を Result に格納しているタスク。A task whose Result contains the value of the specified column.


データの取得中、接続が切断されたか、閉じられました。The connection was dropped or closed during data retrieval.

- または --or-

データの取得中、データ リーダーが閉じられました。The data reader was closed during the data retrieval.

- または --or-

読み取ることのできるデータはありません (たとえば、最初の Read() は呼び出されなかったか、false を返しました)。There is no data ready to be read (for example, the first Read() hasn't been called, or it returned false).


以前に読み取られた列をシーケンシャル モードで読み取ろうとしました。Tried to read a previously-read column in sequential mode.


非同期操作が進行中でした。There was an asynchronous operation in progress. シーケンシャル モードで実行中、これはすべての Get_*_ メソッドに適用されます。ストリームの読み取り中に呼び出すことができるためです。This applies to all Get_*_ methods when running in sequential mode, as they could be called while reading a stream.

指定された名前は、有効な列名ではありません。The name specified is not a valid column name.

データベースによって返された値が一致しないか、T にキャストできません。The value returned by the database doesn't match or cannot be cast to T.


この非同期メソッドは、リーダーがシーケンシャルモードで作成されるときに、呼び出し元のスレッドがブロックされないようにするためだけに必要です。This asynchronous method is only needed to avoid blocking the calling thread when the reader is created in sequential mode.

シーケンシャルモードが指定されていない場合、ReadAsync が完了するたびにすべての列の値がメモリ内で使用可能になり、メソッドの同期バージョンを呼び出すと、呼び出し元のスレッドがブロックされないようにする必要があります。If sequential mode isn't specified, all column values should become available in memory each time ReadAsync completes, and calling the synchronous version of the method shouldn't block the calling thread.

この非同期メソッドの既定の実装は、対応する同期メソッドを呼び出し、完了したタスクを返します。これにより、呼び出し元のスレッドがブロックされる可能性があります。The default implementation of this asynchronous method invokes its synchronous counterpart and returns a completed Task, potentially blocking the calling thread. 既定の実装は、既に取り消されたキャンセルトークンが渡された場合にも、取り消されたタスクを返します。The default implementation also returns a cancelled task if passed an already cancelled cancellation token.

非同期プログラミングをサポートするデータプロバイダーは、非同期 i/o 操作を使用して既定の inmplementation を上書きする必要があります。Data providers that support asynchronous programming should override the default inmplementation using asynchronous I/O operations.

このメソッドは、早期に操作をキャンセルすることを要求するために使用できるキャンセル トークンを受け取ります。This method accepts a cancellation token that can be used to request the operation to be cancelled early. 実装は、この要求を無視する場合があります。Implementations may ignore this request.

返されたタスクが完了していないうちは、DbDataReader のオブジェクトの他のメソッドとプロパティを呼び出さないでください。Other methods and properties of the DbDataReader object should not be invoked while the returned Task is not yet completed.