Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Evento BackgroundWorker.RunWorkerCompleted

 

Publicado: octubre de 2016

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 desencadena cuando el DoWork devuelve el controlador de eventos.

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

El Error propiedad de System.ComponentModel.RunWorkerCompletedEventArgs indica que la operación produjo una excepción.

El Cancelled propiedad de System.ComponentModel.RunWorkerCompletedEventArgs indica si se procesa una solicitud de cancelación mediante la operación en segundo plano. Si su código en el DoWork controlador de eventos detecta una solicitud de cancelación mediante la comprobación de la CancellationPending marca y la configuración de la Cancel marca de System.ComponentModel.DoWorkEventArgs a true, el Cancelled marca de System.ComponentModel.RunWorkerCompletedEventArgs también se establecerá en true.

System_CAPS_cautionPrecaución

Tenga en cuenta que el código en el DoWork controlador de eventos puede finalizar su trabajo mientras se realiza una solicitud de cancelación y el bucle de sondeo podría pasar por alto CancellationPending se establece en true. En este caso, el Cancelled marca de System.ComponentModel.RunWorkerCompletedEventArgs en su RunWorkerCompleted controlador de eventos no se establecerá en true, incluso si se realizó una solicitud de cancelación. Esta situación se denomina un condición de carrera y es un problema habitual en la programación multiproceso. Para obtener más información acerca del diseño de multithreading problemas, vea Managed Threading Best Practices.

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

En el ejemplo de código siguiente se muestra el uso de la RunWorkerCompleted eventos para controlar el resultado de una operación asincrónica. Este ejemplo de código forma parte de un ejemplo mayor proporcionado para el BackgroundWorker clase.

// 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;
}

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 2.0
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: