NegotiateStream.EndRead(IAsyncResult) Metod

Definition

Avslutar en asynkron läsåtgärd som startades med ett anrop till 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

Parametrar

asyncResult
IAsyncResult

En IAsyncResult instans som returneras av ett anrop till BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

Returer

Ett Int32 värde som anger antalet byte som lästs från den underliggande strömmen.

Undantag

asyncResult är null.

asyncResult skapades inte av ett anrop till BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

Det finns ingen väntande läsåtgärd att slutföra.

-eller-

Autentiseringen har inte inträffat.

Läsåtgärden misslyckades.

Exempel

I följande kodexempel visas hur du avslutar en asynkron läsåtgärd. Ett exempel som visar hur du startar åtgärden BeginReadfinns i .

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());
}

Kommentarer

Om åtgärden inte har slutförts blockeras den här metoden tills den gör det.

Använd metoden för Read att utföra den här åtgärden synkront.

Du kan inte anropa den här metoden förrän du har autentiserats. Om du vill autentisera AuthenticateAsClientanropar du någon av metoderna , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServer, AuthenticateAsServerAsynceller BeginAuthenticateAsServer .

Gäller för