Lire en anglais

Partager via


AsyncResult Classe

Définition

Encapsule les résultats d'une opération asynchrone sur un délégué.

C#
public class AsyncResult : IAsyncResult, System.Runtime.Remoting.Messaging.IMessageSink
C#
[System.Runtime.InteropServices.ComVisible(true)]
public class AsyncResult : IAsyncResult, System.Runtime.Remoting.Messaging.IMessageSink
Héritage
AsyncResult
Attributs
Implémente

Exemples

L’exemple suivant montre comment utiliser la AsyncWaitHandle propriété pour obtenir un WaitHandle, et comment attendre un appel asynchrone sur un délégué. Le WaitHandle est signalé quand l’appel asynchrone se termine et vous pouvez l’attendre en appelant la méthode WaitOne .

L’exemple se compose de deux classes, la classe qui contient la méthode appelée de façon asynchrone et la classe qui contient la méthode qui effectue l’appel Main .

Pour plus d’informations et d’autres exemples d’appels de méthodes asynchrones à l’aide de délégués, consultez Appeler des méthodes synchrones de façon asynchrone.

C#
using System;
using System.Threading;

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncDemo
    {
        // The method to be executed asynchronously.
        public string TestMethod(int callDuration, out int threadId)
        {
            Console.WriteLine("Test method begins.");
            Thread.Sleep(callDuration);
            threadId = Thread.CurrentThread.ManagedThreadId;
            return String.Format("My call time was {0}.", callDuration.ToString());
        }
    }
    // The delegate must have the same signature as the method
    // it will call asynchronously.
    public delegate string AsyncMethodCaller(int callDuration, out int threadId);
}
C#
using System;
using System.Threading;

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncMain
    {
        static void Main()
        {
            // The asynchronous method puts the thread id here.
            int threadId;

            // Create an instance of the test class.
            AsyncDemo ad = new AsyncDemo();

            // Create the delegate.
            AsyncMethodCaller caller = new AsyncMethodCaller(ad.TestMethod);

            // Initiate the asychronous call.
            IAsyncResult result = caller.BeginInvoke(3000,
                out threadId, null, null);

            Thread.Sleep(0);
            Console.WriteLine("Main thread {0} does some work.",
                Thread.CurrentThread.ManagedThreadId);

            // Wait for the WaitHandle to become signaled.
            result.AsyncWaitHandle.WaitOne();

            // Perform additional processing here.
            // Call EndInvoke to retrieve the results.
            string returnValue = caller.EndInvoke(out threadId, result);

            // Close the wait handle.
            result.AsyncWaitHandle.Close();

            Console.WriteLine("The call executed on thread {0}, with return value \"{1}\".",
                threadId, returnValue);
        }
    }
}

/* This example produces output similar to the following:

Main thread 1 does some work.
Test method begins.
The call executed on thread 3, with return value "My call time was 3000.".
 */

Remarques

La AsyncResult classe est utilisée conjointement avec les appels de méthode asynchrones effectués à l’aide de délégués. Le IAsyncResult retour de la méthode du BeginInvoke délégué peut être converti en AsyncResultun . La AsyncResult propriété qui contient l’objet AsyncDelegate délégué sur lequel l’appel asynchrone a été appelé.

Pour plus d’informations sur BeginInvoke les appels asynchrones utilisant des délégués, consultez Programmation asynchrone à l’aide de délégués.

Propriétés

AsyncDelegate

Obtient l'objet de délégué sur lequel l'appel asynchrone a été effectué.

AsyncState

Obtient l'objet fourni comme dernier paramètre d'un appel de méthode BeginInvoke.

AsyncWaitHandle

Obtient un WaitHandle qui encapsule des handles de synchronisation Win32 et permet l'implémentation de divers schémas de synchronisation.

CompletedSynchronously

Obtient une valeur indiquant si l'appel BeginInvoke s'est terminé de façon synchrone.

EndInvokeCalled

Obtient ou définit une valeur indiquant si EndInvoke a été appelé sur AsyncResult en cours.

IsCompleted

Obtient une valeur indiquant si le serveur a terminé l'appel.

NextSink

Obtient le récepteur de messages suivant dans la chaîne de récepteurs.

Méthodes

AsyncProcessMessage(IMessage, IMessageSink)

Implémente l'interface IMessageSink.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetReplyMessage()

Obtient le message de réponse pour l'appel asynchrone.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
SetMessageCtrl(IMessageCtrl)

Définit IMessageCtrl pour l'appel de méthode distant en cours qui offre un moyen de contrôler les messages asynchrones après leur distribution.

SyncProcessMessage(IMessage)

Traite de manière synchrone un message de réponse retourné par un appel de méthode sur un objet distant.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Voir aussi