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

定義

非同期の読み取り操作を開始します。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

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

count
Int32

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

callback
AsyncCallback

読み取りを完了したときに呼び出す、省略可能な非同期コールバック。An optional asynchronous callback, to be called when the read is complete.

state
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 で引き続き使用できます。ただし、ReadAsyncWriteAsyncCopyToAsyncFlushAsyncなどの新しい非同期メソッドを使用すると、非同期 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.

IAsyncResult 戻り値をストリームの EndRead メソッドに渡して、読み取ったバイト数を確認し、読み取りに使用するオペレーティングシステムリソースを解放します。Pass 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. BeginReadを呼び出すたびに、EndRead を1回呼び出す必要があります。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.

適用対象

こちらもご覧ください