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

BackgroundWorker.RunWorkerCompleted (Evento)

Se produce cuando la operación en segundo plano se ha completado, se ha cancelado o ha producido una excepción.

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

public event RunWorkerCompletedEventHandler RunWorkerCompleted

Este evento se provoca cuando el controlador de eventos DoWork devuelve.

Si la operación finaliza correctamente y su resultado se asigna en el controlador de eventos DoWork, se puede obtener acceso al resultado a través de la propiedad RunWorkerCompletedEventArgs.Result.

La propiedad Error de System.ComponentModel.RunWorkerCompletedEventArgs indica que la operación ha producido una excepción.

La propiedad Cancelled de System.ComponentModel.RunWorkerCompletedEventArgs indica si la operación en segundo plano ha procesado una solicitud de la cancelación. Si el código del controlador de eventos DoWork detecta una solicitud de cancelación mediante la comprobación del marcador CancellationPending y el establecimiento del marcador Cancel de System.ComponentModel.DoWorkEventArgs en true, el marcador Cancelled de System.ComponentModel.RunWorkerCompletedEventArgs también se establecerá en true.

Nota de precauciónPrecaución

Tenga en cuenta que el código del controlador de eventos DoWork puede finalizar su trabajo mientras se realiza una solicitud de cancelación y que el bucle de sondeo podría pasar por alto la propiedad CancellationPending que se haya establecido en true. En este caso, el marcador Cancelled del objeto System.ComponentModel.RunWorkerCompletedEventArgs del controlador de eventos RunWorkerCompleted no se establecerá en true aunque se haya realizado una solicitud de cancelación. Esta situación se denomina condición de carrera y es un problema habitual en la programación con subprocesamiento múltiple. Para obtener más información sobre los problemas de diseño de multithreading, vea Procedimientos recomendados para el subprocesamiento administrado.

El controlador de eventos RunWorkerCompleted debe comprobar siempre las propiedades AsyncCompletedEventArgs.Error y AsyncCompletedEventArgs.Cancelled antes de obtener acceso a la propiedad RunWorkerCompletedEventArgs.Result. Si se ha producido una excepción o si se ha cancelado la operación, el acceso a la propiedad RunWorkerCompletedEventArgs.Result provoca una excepción.

En el ejemplo de código siguiente se muestra el uso del evento RunWorkerCompleted para controlar el resultado de una operación asincrónica. Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase BackgroundWorker.


// This event handler deals with the results of the
// background operation.
private void backgroundWorker1_RunWorkerCompleted(
    object sender, RunWorkerCompletedEventArgs e)
{
    // First, handle the case where an exception was thrown.
    if (e.Error != null)
    {
        MessageBox.Show(e.Error.Message);
    }
    else if (e.Cancelled)
    {
        // Next, handle the case where the user canceled 
        // the operation.
        // Note that due to a race condition in 
        // the DoWork event handler, the Cancelled
        // flag may not have been set, even though
        // CancelAsync was called.
        resultLabel.Text = "Canceled";
    }
    else
    {
        // Finally, handle the case where the operation 
        // succeeded.
        resultLabel.Text = e.Result.ToString();
    }

    // Enable the UpDown control.
    this.numericUpDown1.Enabled = true;

    // Enable the Start button.
    startAsyncButton.Enabled = true;

    // Disable the Cancel button.
    cancelAsyncButton.Enabled = false;
}


.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.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft