NegotiateStream.EndRead(IAsyncResult) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Ukončí asynchronní operaci čtení, která byla zahájena voláním 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
Instance IAsyncResult vrácená voláním BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Návraty
Hodnota Int32 , která určuje počet bajtů přečtených z podkladového datového proudu.
Výjimky
asyncResult je null.
AsyncResult nebyl vytvořen voláním BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Neexistuje žádná čekající operace čtení, která by se dokončila.
nebo
K ověřování nedošlo.
Operace čtení se nezdařila.
Příklady
Následující příklad kódu ukazuje ukončení asynchronní operace čtení. Příklad, který ukazuje spuštění operace, viz 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());
}
Poznámky
Pokud operace nebyla dokončena, tato metoda blokuje, dokud se nedokončí.
Pokud chcete tuto operaci provést synchronně, použijte metodu Read .
Tuto metodu nelze volat, dokud nebudete úspěšně ověřeni. Ověření provedete voláním jedné z AuthenticateAsClientmetod , , AuthenticateAsClientAsyncBeginAuthenticateAsClientAuthenticateAsServer, , AuthenticateAsServerAsyncnebo BeginAuthenticateAsServer metod.