NegotiateStream.EndRead(IAsyncResult) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Encerra uma operação de leitura assíncrona que foi iniciada com uma chamada para 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
Parâmetros
- asyncResult
- IAsyncResult
Uma instância IAsyncResult retornada por uma chamada a BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Retornos
Um valor Int32 que especifica o número de bytes lidos do fluxo subjacente.
Exceções
asyncResult é null.
O asyncResult não foi criado por uma chamada para BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Não há nenhuma operação de leitura pendente a ser concluída.
- ou -
A autenticação não ocorreu.
Falha na operação de leitura.
Exemplos
O exemplo de código a seguir demonstra o fim de uma operação de leitura assíncrona. Para obter um exemplo que demonstra como iniciar a operação, consulte 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());
}
Comentários
Se a operação não tiver sido concluída, esse método será bloqueado até que ela o faça.
Para executar essa operação de forma síncrona, use o Read método .
Não é possível chamar esse método até que você tenha se autenticado com êxito. Para autenticar, chame um dos AuthenticateAsClientmétodos , AuthenticateAsClientAsync, AuthenticateAsServerBeginAuthenticateAsClient, , AuthenticateAsServerAsyncou BeginAuthenticateAsServer .