Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase AsyncResult

 

Publicado: octubre de 2016

Encapsula los resultados de una operación asincrónica en un delegado.

Espacio de nombres:   System.Runtime.Remoting.Messaging
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Runtime.Remoting.Messaging.AsyncResult

[ComVisibleAttribute(true)]
public class AsyncResult : IAsyncResult, IMessageSink

NombreDescripción
System_CAPS_pubpropertyAsyncDelegate

Obtiene el objeto de delegado en el que se ha invocado la llamada asincrónica.

System_CAPS_pubpropertyAsyncState

Obtiene el objeto proporcionado como el último parámetro de un BeginInvoke llamada al método.

System_CAPS_pubpropertyAsyncWaitHandle

Obtiene un WaitHandle que encapsula identificadores de sincronización Win32 y permite la implementación de varios esquemas de sincronización.

System_CAPS_pubpropertyCompletedSynchronously

Obtiene un valor que indica si la BeginInvoke llamada se ha completado sincrónicamente.

System_CAPS_pubpropertyEndInvokeCalled

Obtiene o establece un valor que indica si EndInvoke se ha llamado en el actual AsyncResult.

System_CAPS_pubpropertyIsCompleted

Obtiene un valor que indica si el servidor ha completado la llamada.

System_CAPS_pubpropertyNextSink

Obtiene el siguiente receptor de mensajes en la cadena de receptores.

NombreDescripción
System_CAPS_pubmethodAsyncProcessMessage(IMessage, IMessageSink)

Implementa la interfaz IMessageSink.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetReplyMessage()

Obtiene el mensaje de respuesta para la llamada asincrónica.

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodSetMessageCtrl(IMessageCtrl)

Establece un IMessageCtrl para la llamada de método remoto actual, que proporciona una manera de controlar los mensajes asincrónicos una vez que se hayan enviado.

System_CAPS_pubmethodSyncProcessMessage(IMessage)

Procesa sincrónicamente un mensaje de respuesta devuelto por una llamada al método en un objeto remoto.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

The T:System.Runtime.Remoting.Messaging.AsyncResult class is used in conjunction with asynchronous method calls made using delegates. The T:System.IAsyncResult returned from the delegate's BeginInvoke method can be cast to an T:System.Runtime.Remoting.Messaging.AsyncResult. The T:System.Runtime.Remoting.Messaging.AsyncResult has the P:System.Runtime.Remoting.Messaging.AsyncResult.AsyncDelegate property that holds the delegate object on which the asynchronous call was invoked.

For more information about BeginInvoke and asynchronous calls using delegates, see Asynchronous Programming Using Delegates.

The following example demonstrates how to use the P:System.Runtime.Remoting.Messaging.AsyncResult.AsyncWaitHandle property to get a T:System.Threading.WaitHandle, and how to wait for an asynchronous call on a delegate. The T:System.Threading.WaitHandle is signaled when the asynchronous call completes, and you can wait for it by calling the Overload:System.Threading.WaitHandle.WaitOne method.

The example consists of two classes, the class that contains the method which is called asynchronously, and the class that contains the Main method that makes the call.

For more information and more examples of calling methods asynchronously by using delegates, see Calling Synchronous Methods Asynchronously.

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);
}
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.".
 */

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: