NegotiateStream.EndRead(IAsyncResult) Metoda
Definicja
Ważny
Niektóre informacje dotyczą produktów przedpremierowych, które mogą zostać znacznie zmodyfikowane przed premierą. Microsoft nie udziela żadnych gwarancji, ani wyraźnych, ani domniemanych, dotyczących informacji podanych tutaj.
Kończy asynchroniczną operację odczytu, która została uruchomiona z wywołaniem metody 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
Parametry
- asyncResult
- IAsyncResult
Wystąpienie IAsyncResult zwrócone przez wywołanie metody BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Zwraca
Int32 Wartość określająca liczbę bajtów odczytanych ze strumienia bazowego.
Wyjątki
asyncResult to null.
Element asyncResult nie został utworzony przez wywołanie metody BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Nie ma oczekującej operacji odczytu do ukończenia.
-lub-
Uwierzytelnianie nie wystąpiło.
Operacja odczytu nie powiodła się.
Przykłady
Poniższy przykład kodu pokazuje zakończenie asynchronicznej operacji odczytu. Aby zapoznać się z przykładem uruchamiania operacji, zobacz 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());
}
Uwagi
Jeśli operacja nie została ukończona, ta metoda blokuje działanie, dopóki nie zostanie wykonana.
Aby wykonać tę operację synchronicznie, użyj Read metody .
Nie można wywołać tej metody do momentu pomyślnego uwierzytelnienia. Aby przeprowadzić uwierzytelnianie, wywołaj jedną z AuthenticateAsClientmetod , , AuthenticateAsClientAsyncAuthenticateAsServerBeginAuthenticateAsClient, AuthenticateAsServerAsynclub .BeginAuthenticateAsServer