NegotiateStream.EndRead(IAsyncResult) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een asynchrone leesbewerking beëindigd die is gestart met een aanroep naar 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
Parameters
- asyncResult
- IAsyncResult
Een IAsyncResult exemplaar dat wordt geretourneerd door een aanroep naar BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Retouren
Een Int32 waarde die het aantal bytes aangeeft dat uit de onderliggende stroom is gelezen.
Uitzonderingen
asyncResult is null.
Het asyncResult is niet gemaakt door een aanroep naar BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Er is geen leesbewerking in behandeling om te voltooien.
– of –
Er is geen verificatie opgetreden.
De leesbewerking is mislukt.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een asynchrone leesbewerking beëindigt. Zie voor een voorbeeld van het starten van de bewerking 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());
}
Opmerkingen
Als de bewerking niet is voltooid, wordt deze methode geblokkeerd totdat de bewerking is voltooid.
Gebruik de Read methode om deze bewerking synchroon uit te voeren.
U kunt deze methode pas aanroepen als u bent geverifieerd. Als u wilt verifiëren, roept u een van de AuthenticateAsClientmethoden , , AuthenticateAsClientAsync, AuthenticateAsServerAsyncBeginAuthenticateAsClientAuthenticateAsServerof BeginAuthenticateAsServer methoden aan.