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

Definition

非同期の読み込み動作を開始します。 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.

Returns

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

Exceptions

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

Remarks

.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. EndRead すべての呼び出しに 1 回呼び出される必要があります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.

Applies to

See Also