Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Method

定義

非同期の読み込み動作を開始します。Begins an asynchronous read operation. (代わりに、ReadAsync(Byte[], Int32, Int32) の使用を検討してください。)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

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);
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[]

データを読み込むバッファー。The buffer to read the data into.

offset
Int32 Int32 Int32 Int32

ストリームから読み込んだデータの書き込み開始位置を示す buffer 内のバイト オフセット。The byte offset in buffer at which to begin writing data read from the stream.

count
Int32 Int32 Int32 Int32

読み取る最大バイト数。The maximum number of bytes to read.

callback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

読み取り完了時に呼び出されるオプションの非同期コールバック。An optional asynchronous callback, to be called when the read is complete.

state
Object Object Object Object

この特定の非同期読み取り要求を他の要求と区別するために使用するユーザー指定のオブジェクト。A user-provided object that distinguishes this particular asynchronous read request from other requests.

戻り値

非同期の読み込みを表す IAsyncResult。まだ保留状態の場合もあります。An IAsyncResult that represents the asynchronous read, which could still be pending.

例外

ストリームの末尾を越えて非同期の読み込みを実行しようとしました。または、ディスク エラーが発生しました。Attempted an asynchronous read past the end of the stream, or a disk error occurs.

1 つ以上の引数が無効です。One or more of the arguments is invalid.

ストリームが閉じた後でメソッドが呼び出されました。Methods were called after the stream was closed.

現在の Stream 実装は、読み取り操作をサポートしていません。The current Stream implementation does not support the read operation.

注釈

.NET Framework 4 およびそれ以前のバージョンで非同期 I/O 操作を実装するには、 BeginReadEndRead などのメソッドを使用する必要があります。In the .NET Framework 4 and earlier versions, you have to use methods such as BeginRead and EndRead to implement asynchronous I/O operations. これら.NET Framework 4.5.NET Framework 4.5のメソッドは、レガシコードをサポートするためにでも使用できます。ただし、、、 WriteAsync CopyToAsyncFlushAsyncなどの新しい非同期メソッドReadAsyncは、非同期 i/o 操作をより簡単に実装するのに役立ちます。These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

ストリームでののBeginRead既定の実装は、 ReadメソッドをRead同期的に呼び出します。つまり、一部のストリームでブロックされる可能性があります。The default implementation of BeginRead on a stream calls the Read method synchronously, which means that Read might block on some streams. ただし、 FileStreamNetworkStreamなどのクラスのインスタンスは、インスタンスが非同期的に開かれている場合、非同期操作を完全にサポートします。However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. したがって、のBeginRead呼び出しは、これらのストリームでブロックされません。Therefore, calls to BeginRead will not block on those streams. (たとえば、 BeginRead非同期デリゲートを使用して) 非同期動作を提供することにより、をオーバーライドできます。You can override BeginRead (by using async delegates, for example) to provide asynchronous behavior.

ストリームのEndReadメソッドに戻り値を渡して、読み取ったバイト数を確認し、読み取りに使用するオペレーティングシステムリソースを解放します。IAsyncResultPass the IAsyncResult return value to the EndRead method of the stream to determine how many bytes were read and to release operating system resources used for reading. EndReadを呼び出すたびに、をBeginRead呼び出す必要があります。EndRead must be called once for every call to BeginRead. これを行うには、を呼び出しBeginReadたのと同じコードを使用するか、にBeginRead渡されたコールバックでを使用します。You can do this either by using the same code that called BeginRead or in a callback passed to BeginRead.

ストリーム内の現在位置は、i/o 操作が完了したときではなく、非同期の読み取りまたは書き込みが実行されたときに更新されます。The current position in the stream is updated when the asynchronous read or write is issued, not when the I/O operation completes.

複数の同時非同期要求は、要求の完了順序が不明確であることを表示します。Multiple simultaneous asynchronous requests render the request completion order uncertain.

現在のCanReadインスタンスが読み取りをサポートしているかどうかを確認するには、プロパティを使用します。Use the CanRead property to determine whether the current instance supports reading.

ストリームが閉じているか、無効な引数を渡した場合、からBeginReadすぐに例外がスローされます。If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginRead. I/o 要求中のディスク障害など、非同期の読み取り要求中に発生したエラーは、スレッドプールのスレッドで発生し、を呼び出すEndReadときに例外をスローします。Errors that occur during an asynchronous read request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndRead.

適用対象

こちらもご覧ください