CryptoStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) メソッド

定義

非同期の読み込み動作を開始します。 (代わりに、ReadAsync の使用を検討してください。)

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

buffer
Byte[]

データを読み込むバッファー。

offset
Int32

ストリームから読み込んだデータの書き込み開始位置を示す buffer 内のバイト オフセット。

count
Int32

読み取る最大バイト数。

callback
AsyncCallback

読み取り完了時に呼び出されるオプションの非同期コールバック。

state
Object

この特定の非同期読み取り要求を他の要求と区別するために使用するユーザー指定のオブジェクト。

戻り値

非同期の読み込みを表す IAsyncResult。まだ保留状態の場合もあります。

例外

ストリームの末尾を越えて非同期の読み込みを実行しようとしました。または、ディスク エラーが発生しました。

1 つ以上の引数が無効です。

ストリームが閉じた後でメソッドが呼び出されました。

現在の Stream 実装は、読み取り操作をサポートしていません。

注釈

重要

.NET 6 以降では、このメソッドは要求されたバイト数を読み取らない場合があります。 詳細については、「 DeflateStream、GZipStream、CryptoStream の部分読み取りと 0 バイト読み取り」を参照してください。

.NET Framework 4 およびそれ以前のバージョンで非同期 I/O 操作を実装するには、BeginReadEndRead などのメソッドを使用する必要があります。 これらのメソッドは、レガシ コードをサポートするために現在のバージョンで引き続き使用できます。ただし、、、 などのReadAsyncWriteAsyncCopyToAsyncFlushAsync新しい非同期メソッドは、非同期 I/O 操作をより簡単に実装するのに役立ちます。

ストリームの IAsyncResult メソッドに戻り値を EndRead 渡して、読み取られたバイト数を確認し、読み取りに使用されるオペレーティング システム リソースを解放します。 EndRead の呼び出しごとに 1 回呼び出す BeginRead必要があります。 これを行うには、 を呼び出 BeginRead したコードと同じコードを使用するか、 に渡されたコールバックで実行 BeginReadします。

ストリーム内の現在の位置は、I/O 操作が完了したときではなく、非同期の読み取りまたは書き込みが発行されるときに更新されます。

複数の同時非同期要求では、要求の完了順序が不明になります。

プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。

ストリームが閉じているか、無効な引数を渡すと、 から BeginReadすぐに例外がスローされます。 非同期読み取り要求中に発生するエラー (I/O 要求中のディスク障害など) は、スレッド プール スレッドで発生し、 を呼び出 EndReadすときに例外をスローします。

適用対象