Partager via


BackgroundWorker.CancelAsync Méthode

Définition

Demande l’annulation d’une opération en arrière-plan en attente.

public:
 void CancelAsync();
public void CancelAsync();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()

Exceptions

Exemples

L’exemple de code suivant illustre l’utilisation de la CancelAsync méthode pour annuler une opération asynchrone (« arrière-plan »). Cet exemple de code fait partie d’un exemple plus grand fourni pour la BackgroundWorker classe.

void cancelAsyncButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{  
   // Cancel the asynchronous operation.
   this->backgroundWorker1->CancelAsync();
   
   // Disable the Cancel button.
   cancelAsyncButton->Enabled = false;
}
void cancelAsyncButton_Click(object sender,
    EventArgs e)
{
    // Cancel the asynchronous operation.
    backgroundWorker1.CancelAsync();

    // Disable the Cancel button.
    cancelAsyncButton.Enabled = false;
}
Private Sub cancelAsyncButton_Click(
ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles cancelAsyncButton.Click

    ' Cancel the asynchronous operation.
    backgroundWorker1.CancelAsync()

    ' Disable the Cancel button.
    cancelAsyncButton.Enabled = False

End Sub

Remarques

CancelAsync envoie une demande pour mettre fin à l’opération en arrière-plan en attente et définit la CancellationPending propriété truesur .

Lorsque vous appelez CancelAsync, votre méthode worker a la possibilité d’arrêter son exécution et de quitter. Le code worker doit vérifier régulièrement la CancellationPending propriété pour voir si elle a été définie truesur .

Avertissement

N’oubliez pas que votre code dans le DoWork gestionnaire d’événements peut terminer son travail en tant que demande d’annulation en cours d’exécution, et que votre boucle d’interrogation peut manquer CancellationPending d’être définie truesur . Dans ce cas, l’indicateur Cancelled de votre RunWorkerCompleted gestionnaire d’événements System.ComponentModel.RunWorkerCompletedEventArgs n’est pas défini truesur , même si une demande d’annulation a été effectuée. Cette situation est appelée une condition de concurrence et est une préoccupation commune dans la programmation multithread. Pour plus d’informations sur les problèmes de conception multithreading, consultez Les meilleures pratiques en matière de threads managés.

S’applique à

Voir aussi