Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

BackgroundWorker.RunWorkerCompleted événement

 

Date de publication : novembre 2016

Se produit lorsque l’opération d’arrière-plan est terminée, a été annulée ou a levé une exception.

Espace de noms:   System.ComponentModel
Assembly:  System (dans System.dll)

public event RunWorkerCompletedEventHandler RunWorkerCompleted

Cet événement est déclenché lorsque la DoWork retourne de gestionnaire d’événements.

Si l’opération a réussi et que son résultat est assigné dans le DoWork Gestionnaire d’événements, vous pouvez accéder au résultat via la RunWorkerCompletedEventArgs.Result propriété.

Le Error propriété du System.ComponentModel.RunWorkerCompletedEventArgs indique qu’une exception a été levée par l’opération.

Le Cancelled propriété System.ComponentModel.RunWorkerCompletedEventArgs indique si une demande d’annulation a été traitée par l’opération d’arrière-plan. Si votre code dans la DoWork Gestionnaire d’événements détecte une demande d’annulation en vérifiant la CancellationPending indicateur et en définissant le Cancel indicateur de System.ComponentModel.DoWorkEventArgs à true, le Cancelled indicateur de System.ComponentModel.RunWorkerCompletedEventArgs est également défini sur true.

System_CAPS_cautionAttention

N’oubliez pas que votre code dans la DoWork Gestionnaire d’événements peut finir son travail durant une demande d’annulation, et votre boucle d’interrogation peut manquer CancellationPending définie sur true. Dans ce cas, le Cancelled indicateur de System.ComponentModel.RunWorkerCompletedEventArgs dans votre RunWorkerCompleted Gestionnaire d’événements n’est pas affectée à true, même si une demande d’annulation a été effectuée. Cette situation est appelée un condition de concurrence critique un problème courant dans la programmation multithread. Pour plus d’informations sur la conception multithread problèmes, consultez Managed Threading Best Practices.

Votre RunWorkerCompleted Gestionnaire d’événements doit toujours vérifier les AsyncCompletedEventArgs.Error et AsyncCompletedEventArgs.Cancelled avant d’accéder aux propriétés de la RunWorkerCompletedEventArgs.Result propriété. Si une exception a été levée ou si l’opération a été annulée, l’accès à la RunWorkerCompletedEventArgs.Result propriété lève une exception.

L’exemple de code suivant illustre l’utilisation de la RunWorkerCompleted événements pour gérer le résultat d’une opération asynchrone. Cet exemple de code fait partie d’un exemple plus complet fourni pour la BackgroundWorker classe.

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

Plateforme Windows universelle
Disponible depuis 10
.NET Framework
Disponible depuis 2.0
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: