NegotiateStream.EndRead(IAsyncResult) Méthode

Définition

Termine une opération de lecture asynchrone qui a été démarrée avec un appel à 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

Paramètres

asyncResult
IAsyncResult

Instance IAsyncResult retournée par un appel à BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

Retours

Valeur Int32 qui spécifie le nombre d’octets lus à partir du flux sous-jacent.

Exceptions

asyncResult a la valeur null.

L’asyncResult n’a pas été créé par un appel à BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).

Aucune opération de lecture en attente n’est terminée.

-ou-

L’authentification n’a pas eu lieu.

Échec de l’opération de lecture.

Exemples

L’exemple de code suivant illustre la fin d’une opération de lecture asynchrone. Pour obtenir un exemple illustrant le démarrage de l’opération, consultez 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());
}

Remarques

Si l’opération n’est pas terminée, cette méthode se bloque jusqu’à ce qu’elle le fasse.

Pour effectuer cette opération de façon synchrone, utilisez la Read méthode.

Vous ne pouvez pas appeler cette méthode tant que vous n’avez pas correctement authentifié. Pour s’authentifier, appelez l’une AuthenticateAsClientdes méthodes ,BeginAuthenticateAsServerAuthenticateAsClientAsyncBeginAuthenticateAsClientAuthenticateAsServerAuthenticateAsServerAsync

S’applique à