Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IAsyncResult (Interfaz)

Representa el estado de una operación asincrónica.

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

[ComVisibleAttribute(true)]
public interface IAsyncResult

El tipo IAsyncResult expone los siguientes miembros.

  NombreDescripción
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAsyncStateObtiene un objeto definido por el usuario que califica una operación asincrónica o que contiene información sobre una operación asincrónica.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAsyncWaitHandleObtiene un WaitHandle que se utiliza para esperar a que se complete una operación asincrónica.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCompletedSynchronouslyObtiene un valor que indica si la operación asincrónica se completó sincrónicamente.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsIsCompletedObtiene un valor que indica si se ha completado la operación asincrónica.
Arriba

Las clases que contienen métodos que pueden funcionar de forma asincrónica implementan la interfaz IAsyncResult. Es el tipo de valor devuelto de los métodos que inicien una operación asincrónica, como FileStream.BeginRead, y se pasa a los métodos que concluyen una operación asincrónica, como FileStream.EndRead. Los objetos IAsyncResult también se pasan a los métodos invocados por los delegados de AsyncCallback cuando se completa una operación asincrónica.

Un objeto que admite la interfaz IAsyncResult almacena la información de estado de una operación asincrónica y proporciona un objeto de sincronización que permite marcar los subprocesos cuando se completa la operación.

NotaNota

La clase AsyncResult es la implementación de IAsyncResult que el método BeginInvoke devuelve cuando se usa un delegado para llamar a un método de forma asincrónica.

Para obtener una descripción detallada de cómo utilizar la interfaz IAsyncResult, vea el tema Llamar a métodos sincrónicos de forma asincrónica.

En el siguiente ejemplo se muestra cómo usar la propiedad AsyncWaitHandle para obtener un objeto WaitHandle y cómo esperar a una llamada asincrónica en un delegado. WaitHandle se señaliza cuando finaliza la llamada asincrónica y puede esperar a que termine llamando al método WaitOne.

El ejemplo consta de dos clases: la clase que contiene el método al que se llama asincrónicamente y la clase que contiene el método Main que realiza la llamada.

Para obtener más información y más ejemplos de cómo llamar asincrónicamente a los métodos mediante delegados, vea Llamar a métodos sincrónicos de forma asincrónica.


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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft