Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

BackgroundWorker.RunWorkerCompleted, événement

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 le gestionnaire d'événements DoWork retourne.

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

La propriété Error de System.ComponentModel.RunWorkerCompletedEventArgs indique qu'une exception a été levée par l'opération.

La propriété Cancelled de System.ComponentModel.RunWorkerCompletedEventArgs indique si une requête d'annulation a été traitée par l'opération d'arrière-plan. Si votre code dans le gestionnaire d'événements DoWork détecte une requête d'annulation en activant l'indicateur CancellationPending et en affectant à l'indicateur Cancel de System.ComponentModel.DoWorkEventArgs la valeur true, l'indicateur Cancelled de System.ComponentModel.RunWorkerCompletedEventArgs aura également la valeur true.

Mise en gardeAttention

N'oubliez pas que votre code dans le gestionnaire d'événements DoWork peut finir son travail durant une requête d'annulation, et votre boucle d'interrogation peut manquer l'affectation à CancellationPending de la valeur true. Dans ce cas, l'indicateur Cancelled de System.ComponentModel.RunWorkerCompletedEventArgs dans votre gestionnaire d'événements RunWorkerCompleted n'a pas la valeur true, même si une requête d'annulation a été faite. Cette situation s'appelle une condition de concurrence critique, un problème courant en programmation multithread. Pour plus d'informations sur les questions de conception multithread, consultez Meilleures pratiques pour le threading managé.

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

L'exemple de code suivant montre l'utilisation de l'événement RunWorkerCompleted 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 classe 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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft