NegotiateStream.EndRead(IAsyncResult) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)の呼び出しで開始された非同期読み取り操作を終了します。
public:
override int EndRead(IAsyncResult ^ asyncResult);
public override int EndRead(IAsyncResult asyncResult);
override this.EndRead : IAsyncResult -> int
Public Overrides Function EndRead (asyncResult As IAsyncResult) As Integer
パラメーター
- asyncResult
- IAsyncResult
IAsyncResultの呼び出しによって返されるBeginRead(Byte[], Int32, Int32, AsyncCallback, Object) インスタンス。
返品
基になるストリームから読み取られたバイト数を指定する Int32 値。
例外
asyncResult は nullです。
asyncResult は、 BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)の呼び出しによって作成されませんでした。
読み取り操作に失敗しました。
例
次のコード例は、非同期読み取り操作を終了する方法を示しています。 操作の開始を示す例については、 BeginReadを参照してください。
private static void EndReadCallback(ClientState cState, int bytes)
{
NegotiateStream authStream = (NegotiateStream)cState.AuthenticatedStream;
// Read the client message.
try
{
cState.Message.Append(Encoding.UTF8.GetChars(cState.Buffer, 0, bytes));
if (bytes != 0)
{
Task<int> readTask = authStream.ReadAsync(cState.Buffer, 0, cState.Buffer.Length);
readTask
.ContinueWith(task => { EndReadCallback(cState, task.Result); })
.Wait();
return;
}
}
catch (Exception e)
{
// A real application should do something
// useful here, such as logging the failure.
Console.WriteLine("Client message exception:");
Console.WriteLine(e);
return;
}
IIdentity id = authStream.RemoteIdentity;
Console.WriteLine("{0} says {1}", id.Name, cState.Message.ToString());
}
注釈
操作が完了していない場合、このメソッドは完了するまでブロックします。
この操作を同期的に実行するには、 Read メソッドを使用します。
正常に認証されるまで、このメソッドを呼び出すことはできません。 認証するには、 AuthenticateAsClient、 AuthenticateAsClientAsync、 BeginAuthenticateAsClient、 AuthenticateAsServer、 AuthenticateAsServerAsync、または BeginAuthenticateAsServer のいずれかのメソッドを呼び出します。