Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
非同期の読み込み動作を開始します。 (代わりに、ReadAsync(Byte[], Int32, Int32) の使用を検討してください。)
public:
virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable 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 Framework 4 およびそれ以前のバージョンで非同期 I/O 操作を実装するには、 BeginRead 、 EndRead などのメソッドを使用する必要があります。 これらのメソッドは、レガシ コードをサポートするために .NET Framework 4.5 で引き続き使用できます。ただし、、 WriteAsyncCopyToAsyncFlushAsyncなどのReadAsync新しい非同期メソッドを使用すると、非同期 I/O 操作をより簡単に実装できます。
ストリームでの の既定の BeginRead
実装では、 メソッドが Read 同期的に呼び出されます。つまり Read
、一部のストリームで がブロックされる可能性があります。 ただし、 や などのFileStream
NetworkStream
クラスのインスタンスは、インスタンスが非同期で開かれている場合は、非同期操作を完全にサポートします。 したがって、 の BeginRead
呼び出しは、これらのストリームでブロックされません。 非同期動作を提供するには、(非同期デリゲートなどを使用して) をオーバーライド BeginRead
できます。
ストリームの IAsyncResult
メソッドに戻り値を EndRead 渡して、読み取られたバイト数を確認し、読み取りに使用されるオペレーティング システム リソースを解放します。 EndRead の呼び出しごとに 1 回呼び出す BeginRead必要があります。 これを行うには、 を呼び出 BeginRead
したのと同じコードを使用するか、 に BeginRead
渡されたコールバックでを使用します。
ストリーム内の現在位置は、I/O 操作が完了したときではなく、非同期の読み取りまたは書き込みが発行されたときに更新されます。
複数の同時非同期要求によって、要求完了順序が不確実になります。
プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。
ストリームが閉じているか、無効な引数を渡すと、 から BeginRead
例外が直ちにスローされます。 非同期読み取り要求中に発生するエラー (I/O 要求中のディスク障害など) は、スレッド プール スレッドで発生し、 を呼び出 EndRead
すときに例外をスローします。
適用対象
こちらもご覧ください
.NET