¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
AsyncOperationManager (Clase)
Collapse the table of content
Expand the table of content
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

AsyncOperationManager (Clase)

Proporciona administración de simultaneidad para las clases que admiten llamadas de métodos asincrónicos. Esta clase no puede heredarse.

System.Object
  System.ComponentModel.AsyncOperationManager

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

[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public static class AsyncOperationManager

El tipo AsyncOperationManager expone los siguientes miembros.

  NombreDescripción
Propiedad públicaMiembro estáticoSynchronizationContextObtiene o establece el contexto de sincronización de la operación asincrónica.
Arriba

  NombreDescripción
Método públicoMiembro estáticoCreateOperationDevuelve un objeto System.ComponentModel.AsyncOperation para realizar un seguimiento de la duración de una operación asincrónica determinada.
Arriba

Si una clase necesita proporcionar un comportamiento asincrónico conforme a Información general sobre el modelo asincrónico basado en eventos, se producirán una serie de problemas de administración de simultaneidad. Entre ellos, el requisito de garantizar que se llame a los controladores de eventos en un subproceso o contexto que sea adecuado para el modelo de aplicación (por ejemplo, aplicaciones de Windows Forms, aplicaciones ASP.NET, aplicaciones de consola, etcétera). AsyncOperationManager proporciona una forma cómoda de crear una clase que se ejecute correctamente en todos los modelos de aplicación compatibles con .NET Framework.

La clase AsyncOperationManager dispone de un método, CreateOperation, que devuelve un objeto System.ComponentModel.AsyncOperation que se puede utilizar para realizar un seguimiento de la duración de una tarea asincrónica determinada. El objeto System.ComponentModel.AsyncOperation de una tarea puede utilizarse para avisar a los clientes de la finalización de una tarea. También puede utilizarse para exponer actualizaciones de progreso y resultados incrementales sin terminar la operación.

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

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.

En el ejemplo de código siguiente se muestra cómo utilizar la clase AsyncOperationManager para crear una clase que admita operaciones asincrónicas para cualquier modelo de aplicación. Se muestra cómo implementar una clase que comprueba si un número es primo. Este cálculo puede llevar mucho tiempo, por lo que se realiza en un subproceso independiente. Los informes de progreso, resultados incrementales y notificaciones de finalización se controlan mediante la clase AsyncOperation, que garantiza que se llame a los controladores de eventos del cliente en el subproceso o contexto adecuado.

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:
© 2015 Microsoft