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.DoWork événement

 

Date de publication : novembre 2016

Se produit lorsque RunWorkerAsync est appelé.

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

public event DoWorkEventHandler DoWork

Cet événement est déclenché lorsque vous appelez le RunWorkerAsync (méthode). Voici où vous démarrez l’opération qui effectue le travail potentiellement long.

Votre code dans la DoWork Gestionnaire d’événements doit vérifier périodiquement la CancellationPending valeur de propriété et abandonner l’opération si elle est true. Lorsque cela se produit, vous pouvez définir le Cancel indicateur de System.ComponentModel.DoWorkEventArgs à true, et le Cancelled indicateur de System.ComponentModel.RunWorkerCompletedEventArgs dans votre RunWorkerCompleted Gestionnaire d’événements est 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.

Si votre opération produit un résultat, vous pouvez assigner le résultat à la DoWorkEventArgs.Result propriété. Il sera disponible pour le RunWorkerCompleted Gestionnaire d’événements dans le RunWorkerCompletedEventArgs.Result propriété.

Si l’opération lève une exception que votre code ne gère pas, le BackgroundWorker intercepte l’exception et la passe le RunWorkerCompleted où elle est exposée en tant que gestionnaire d’événements le Error propriété du System.ComponentModel.RunWorkerCompletedEventArgs. Si vous exécutez sous le débogueur Visual Studio, le débogueur s’arrête au point dans le DoWork Gestionnaire d’événements où l’exception non gérée a été levée. Si vous avez plusieurs BackgroundWorker, vous ne devez pas faire référence à un d'entre eux directement, car cette opération associerait votre DoWork Gestionnaire d’événements à une instance spécifique de BackgroundWorker. Au lieu de cela, vous devez accéder à votre BackgroundWorker en convertissant le sender paramètre dans votre DoWork Gestionnaire d’événements.

Vous devez être en veillant à ne pas manipuler d’objets interface utilisateur dans votre DoWork Gestionnaire d’événements. Au lieu de cela, de communiquer avec l’interface utilisateur via la BackgroundWorker événements.

Pour plus d'informations sur la gestion des événements, consultez la page NIB : consommation d'événements.

L’exemple de code suivant illustre l’utilisation de la DoWork événement pour démarrer une opération asynchrone. Cet exemple de code fait partie d’un exemple plus complet fourni pour la BackgroundWorker classe.

// This event handler is where the actual,
// potentially time-consuming work is done.
private void backgroundWorker1_DoWork(object sender, 
    DoWorkEventArgs e)
{   
    // Get the BackgroundWorker that raised this event.
    BackgroundWorker worker = sender as BackgroundWorker;

    // Assign the result of the computation
    // to the Result property of the DoWorkEventArgs
    // object. This is will be available to the 
    // RunWorkerCompleted eventhandler.
    e.Result = ComputeFibonacci((int)e.Argument, worker, e);
}

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: