NegotiateStream.EndRead(IAsyncResult) Methode

Definition

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.

Gilt für: