NetworkStream.EndWrite メソッド
非同期書き込みの終了を処理します。
Overrides Public Sub EndWrite( _
ByVal asyncResult As IAsyncResult _)
[C#]
public override void EndWrite(IAsyncResultasyncResult);
[C++]
public: void EndWrite(IAsyncResult* asyncResult);
[JScript]
public override function EndWrite(
asyncResult : IAsyncResult);
パラメータ
- asyncResult
非同期呼び出しを表す IAsyncResult 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | asyncResult が null 参照 (Visual Basic では Nothing) です。 |
IOException | 基になっている Socket が閉じています。
または ネットワークへの書き込み中にエラーが発生しました。 |
ObjectDisposedException | NetworkStream が閉じています。 |
IOException | ソケットへのアクセス中にエラーが発生しました。詳細については、「解説」を参照してください。 |
解説
EndWrite は、 BeginWrite で開始された非同期送信操作を完了します。
BeginWrite を呼び出す前に、 AsyncCallback デリゲートを実装するコールバック メソッドを作成する必要があります。このコールバック メソッドは個別のスレッドで実行され、 BeginWrite の終了時に呼び出されます。コールバック メソッドは、 BeginWrite メソッドからパラメータとして返された IAsyncResult を受け取る必要があります。
コールバック メソッド内では、 IAsyncResult パラメータの AsyncState メソッドを呼び出して NetworkStream を取得します。 NetworkStream を取得したら、 EndWrite メソッドを呼び出して送信操作を正常に完了し、送信されたバイト数を返すことができます。
EndWrite メソッドは、要求されたバイト数が送信されるまでブロックします。
メモ IOException が発生した場合は、 InnerException プロパティの値を見ることによって、この原因が SocketException かどうかを確認してください。その場合、 ErrorCode を使用して特定のエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。
使用例
[Visual Basic, C#, C++] myWriteCallback
をコールバック メソッドとして BeginWrite に提供し、 BeginWrite で開始される非同期書き込みの呼び出しを完了するために、その myWriteCallback
に EndWrite を実装する例を次に示します。
Public Shared Sub myWriteCallBack(ar As IAsyncResult)
Dim myNetworkStream As NetworkStream = CType(ar.AsyncState, NetworkStream)
myNetworkStream.EndWrite(ar)
End Sub 'myWriteCallBack
[C#]
public static void myWriteCallBack(IAsyncResult ar){
NetworkStream myNetworkStream = (NetworkStream)ar.AsyncState;
myNetworkStream.EndWrite(ar);
}
[C++]
static void myWriteCallBack(IAsyncResult* ar) {
NetworkStream* myNetworkStream = __try_cast<NetworkStream*>(ar->AsyncState);
myNetworkStream->EndWrite(ar);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
NetworkStream クラス | NetworkStream メンバ | System.Net.Sockets 名前空間 | BeginWrite | 非同期呼び出しの組み込み