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

AsyncOperation (Clase)

Realiza un seguimiento de la duración de una operación asincrónica.

System.Object
  System.ComponentModel.AsyncOperation

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

[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public sealed class AsyncOperation

El tipo AsyncOperation expone los siguientes miembros.

  NombreDescripción
Propiedad públicaSynchronizationContextObtiene el objeto SynchronizationContext que se ha pasado al constructor.
Propiedad públicaUserSuppliedStateObtiene o establece un objeto que se utiliza para identificar de forma única una operación asincrónica.
Arriba

  NombreDescripción
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoOperationCompletedPone fin a la duración de una operación asincrónica.
Método públicoPostInvoca un delegado en el subproceso o contexto adecuado para el modelo de aplicaciones.
Método públicoPostOperationCompletedPone fin a la duración de una operación asincrónica.
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

Al implementar una clase propia conforme a Información general sobre el modelo asincrónico basado en eventos, es posible que sea necesario realizar un seguimiento de la duración de cada una de las operaciones asincrónicas a las que se haya invocado en una instancia de dicha clase. La clase AsyncOperation proporciona medios para efectuar el seguimiento del progreso de una tarea asincrónica e informar del mismo.

En la siguiente lista se identifican una serie de formas de utilizar un objeto AsyncOperation:

  • Para informar al cliente del progreso y los resultados provisionales, llame al método Post desde el código de trabajo asincrónico.

  • Para indicar que una tarea asincrónica ha finalizado o para cancelar una tarea asincrónica pendiente, llame al método PostOperationCompleted.

La clase debe obtener un objeto AsyncOperation para cada una de las tareas asincrónicas llamando al método AsyncOperationManager.CreateOperation cuando se inicie cada tarea. Para permitir que el cliente distinga las distintas tareas asincrónicas, el método AsyncOperationManager.CreateOperation toma un parámetro para un símbolo (token) único proporcionado por el cliente, que se convierte en la propiedad UserSuppliedState. El código de cliente puede utilizarlo, a continuación, para identificar la tarea asincrónica en concreto que está provocando los eventos de progreso o finalización.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el valor de propiedad Resources siguiente: SharedState. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

Notas para los herederos

Los implementadores deben garantizar que las invocaciones a los métodos PostOperationCompleted y Post sean asincrónicas, de modo que los proveedores de bibliotecas de clases no tengan que preocuparse de los posibles desbordamientos de pila si asumen un comportamiento asincrónico en un modelo de aplicación determinado que resulte ser sincrónico.

Para obtener más información sobre la implementación de clases asincrónicas, vea Implementar el modelo asincrónico basado en eventos.

En el siguiente ejemplo de código se muestra cómo utilizar un objeto AsyncOperation para realizar un seguimiento de la duración de operaciones asincrónicas. Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase System.ComponentModel.AsyncOperationManager.

Tiene un ejemplo de código completo en Cómo: Implementar un componente que admita el modelo asincrónico basado en eventos. Para obtener una lista de código completa de un formulario de cliente, vea Cómo: Implementar un cliente en un modelo asincrónico basado en eventos.


// This method starts an asynchronous calculation. 
// First, it checks the supplied task ID for uniqueness.
// If taskId is unique, it creates a new WorkerEventHandler 
// and calls its BeginInvoke method to start the calculation.
public virtual void CalculatePrimeAsync(
    int numberToTest,
    object taskId)
{
    // Create an AsyncOperation for taskId.
    AsyncOperation asyncOp =
        AsyncOperationManager.CreateOperation(taskId);

    // Multiple threads will access the task dictionary,
    // so it must be locked to serialize access.
    lock (userStateToLifetime.SyncRoot)
    {
        if (userStateToLifetime.Contains(taskId))
        {
            throw new ArgumentException(
                "Task ID parameter must be unique", 
                "taskId");
        }

        userStateToLifetime[taskId] = asyncOp;
    }

    // Start the asynchronous operation.
    WorkerEventHandler workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(
        numberToTest,
        asyncOp,
        null,
        null);
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

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.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft