Esta documentación está archivada y no tiene mantenimiento.

AsyncCompletedEventArgs (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Proporciona datos para el evento MethodNameCompleted.

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

public class AsyncCompletedEventArgs : EventArgs
public class AsyncCompletedEventArgs extends EventArgs
public class AsyncCompletedEventArgs extends EventArgs

Si está utilizando una clase que implementa Información general sobre el modelo asincrónico basado en eventos, la clase proporcionará un evento MethodNameCompleted. Si agrega una instancia del delegado System.ComponentModel.AsyncCompletedEventHandler al evento, recibirá información sobre el resultado de las operaciones asincrónicas en el parámetro AsyncCompletedEventArgs del método controlador de eventos correspondiente.

El delegado del controlador de eventos de la aplicación cliente puede comprobar la propiedad Cancelled para determinar si se canceló la tarea asincrónica.

El delegado del controlador de eventos de la aplicación cliente puede comprobar la propiedad Error para determinar si se produjo una excepción durante la ejecución de la tarea asincrónica.

Si la clase admite varios métodos asincrónicos o varias llamadas al mismo método asincrónico, se puede determinar qué tarea provocó el evento MethodNameCompleted comprobando el valor de la propiedad UserState. Es necesario que el código realice un seguimiento de estos símbolos (token), a los que se conoce como id. de tarea, a medida que sus tareas asincrónicas correspondientes van inicializándose y finalizando.

NotaNota

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

Notas para los herederos Las clases que siguen el Modelo asincrónico basado en evento pueden generar eventos para avisar a los clientes del estado de las operaciones asincrónicas pendientes. Si la clase proporciona un evento MethodNameCompleted, puede utilizar AsyncCompletedEventArgs para indicar a los clientes el resultado de las operaciones asincrónicas. Es posible que desee proporcionar a los clientes más información sobre el resultado de una operación asincrónica que la que se incluye en un objeto AsyncCompletedEventArgs. En este caso, puede derivar una clase propia de la clase AsyncCompletedEventArgs y proporcionar variables de instancias privadas adicionales, así como las propiedades públicas de sólo lectura correspondientes. En caso de que se haya cancelado la operación o de que se haya producido un error, hay que llamar al método RaiseExceptionIfNecessary antes de devolver el valor de la propiedad.

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

using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Threading;
using System.Windows.Forms;
...        // This event handler updates the ListView control when the
        // PrimeNumberCalculator raises the CalculatePrimeCompleted
        // event. The ListView item is updated with the appropriate
        // outcome of the calculation: Canceled, Error, or result.
        private void primeNumberCalculator1_CalculatePrimeCompleted(
            object sender, 
            CalculatePrimeCompletedEventArgs e)
        {
            Guid taskId = (Guid)e.UserState;

            if (e.Cancelled)
            {   
                string result = "Canceled";

                ListViewItem lvi = UpdateListViewItem(taskId, result);

                if (lvi != null)
                {
                    lvi.BackColor = Color.Pink;
                    lvi.Tag = null;
                }
            }
            else if (e.Error != null)
            {
                string result = "Error";

                ListViewItem lvi = UpdateListViewItem(taskId, result);

                if (lvi != null)
                {
                    lvi.BackColor = Color.Red;
                    lvi.ForeColor = Color.White;
                    lvi.Tag = null;
                }
            }
            else
            {   
                bool result = e.IsPrime;

                ListViewItem lvi = UpdateListViewItem(
                    taskId, 
                    result, 
                    e.FirstDivisor);

                if (lvi != null)
                {
                    lvi.BackColor = Color.LightGray;
                    lvi.Tag = null;
                }
            }
        }

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Data.*;
import System.Drawing.*;
import System.Threading.*;
import System.Windows.Forms.*;

...    private void primeNumberCalculator1_CalculatePrimeCompleted(Object sender,
        CalculatePrimeCompletedEventArgs e)
    {
        Guid guid = (Guid)e.get_UserState();
        if (e.get_Cancelled()) {
            String result = "Cancelled";
            ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                result);
            if (lvi != null) {
                lvi.set_BackColor(Color.get_Pink());
                lvi.set_Tag(null);
            }
        }
        else {
            if (e.get_Error() != null) {
                String result = "Error";
                ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                    result);
                if (lvi != null) {
                    lvi.set_BackColor(Color.get_Red());
                    lvi.set_ForeColor(Color.get_White());
                    lvi.set_Tag(null);
                }
            }
            else {
                boolean result = e.get_IsPrime();
                ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(),
                    result, e.get_FirstDivisor());
                if (lvi != null) {
                    lvi.set_BackColor(Color.get_LightGray());
                    lvi.set_Tag(null);
                }
            }
        }
    } //primeNumberCalculator1_CalculatePrimeCompleted

System.Object
   System.EventArgs
    System.ComponentModel.AsyncCompletedEventArgs
       Clases derivadas

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

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0
Mostrar: