NegotiateStream.EndRead(IAsyncResult) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Beendet einen asynchronen Lesevorgang, der mit einem Aufruf BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)von .
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
Parameter
- asyncResult
- IAsyncResult
Eine IAsyncResult Instanz, die von einem Aufruf von BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Gibt zurück
Ein Int32 Wert, der die Anzahl der aus dem zugrunde liegenden Datenstrom gelesenen Bytes angibt.
Ausnahmen
asyncResult ist null.
Das asyncResult wurde nicht durch einen Aufruf von BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Es ist kein ausstehender Lesevorgang vorhanden, der abgeschlossen werden soll.
-oder-
Die Authentifizierung ist nicht aufgetreten.
Fehler beim Lesevorgang.
Beispiele
Im folgenden Codebeispiel wird das Beenden eines asynchronen Lesevorgangs veranschaulicht. Ein Beispiel, das das Starten des Vorgangs veranschaulicht, finden Sie unter 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());
}
Hinweise
Wenn der Vorgang nicht abgeschlossen ist, wird diese Methode blockiert, bis er ausgeführt wird.
Verwenden Sie die Read Methode, um diesen Vorgang synchron auszuführen.
Sie können diese Methode erst aufrufen, nachdem Sie sich erfolgreich authentifiziert haben. Rufen Sie zum Authentifizieren eine der AuthenticateAsClientMethoden , , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServer, oder AuthenticateAsServerAsyncBeginAuthenticateAsServer Methoden auf.