次の方法で共有


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

定義

NetworkStream からの非同期の読み取りを開始します。

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

パラメーター

buffer
Byte[]

Byte 型の配列。NetworkStream から読み取られたデータを格納するメモリ内の場所です。

offset
Int32

データの格納を開始する buffer 内の場所。

sizecount
Int32

NetworkStream から読み取るバイト数。

callback
AsyncCallback

AsyncCallback の完了時に実行される BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) デリゲート。

state
Object

追加のユーザー定義のデータを格納するオブジェクト。

戻り値

非同期呼び出しを表す IAsyncResult

例外

buffer パラメーターが null です。

offset パラメーターが 0 未満です。

- または -

offset パラメーターが buffer パラメーターの長さを超えています。

- または -

size が 0 未満です。

- または -

size が、buffer パラメーターの値を引いた offset の長さを超えています。

基になっている Socket が閉じています。

- または -

ネットワークからの読み取り中にエラーが発生しました。

- または -

ソケットへのアクセス中にエラーが発生しました。

NetworkStream が閉じています。

注釈

重要

これは互換性 API です。新しい開発に APM (Begin/End) メソッドを使用することはお勧めしません。 代わりに、タスクベースの同等のものを使用してください。

を実装AsyncCallbackBeginReadするコールバックを渡して、操作の完了に関する通知を受け取ることができます。 基になるネットワーク スタックが同期的に操作を完了すると、 への呼び出し BeginRead中にコールバックがインラインで実行されることに注意してください。 この場合、 CompletedSynchronously 返される IAsyncResult の プロパティは に true 設定され、メソッドが同期的に完了したことを示します。 メソッドに AsyncState 渡される状態オブジェクトを取得するには、 の プロパティ IAsyncResultBeginRead 使用します。

メソッドを BeginRead 呼び出して操作を完了する EndRead 必要があります。 通常、 メソッドは、指定された AsyncCallback デリゲートによって呼び出されます。 EndRead は、操作が完了するまで呼び出し元のスレッドをブロックします。

この操作では、 パラメーターで指定されたバイト数まで、使用可能な量のデータを size 読み取ります。

注意

IOException受け取った場合は、 プロパティをInnerExceptionチェックして、 SocketExceptionが原因かどうかを判断します。 その場合は、 プロパティを ErrorCode 使用して特定のエラー コードを取得します。

読み取りと書き込みの操作は、同期を必要とせずに、 クラスの NetworkStream インスタンスで同時に実行できます。 書き込み操作に一意のスレッドが 1 つあり、読み取り操作に 1 つの一意のスレッドがある限り、読み取りスレッドと書き込みスレッド間のクロス干渉はなく、同期は必要ありません。

適用対象

こちらもご覧ください