BackgroundWorker.CancelAsync Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Demande l'annulation d'une opération d'arrière-plan en attente.
public:
void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Exceptions
WorkerSupportsCancellation a la valeur false
.
Exemples
L’exemple de code suivant illustre l’utilisation de la CancelAsync méthode pour annuler une opération asynchrone (« en 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;
}
private void cancelAsyncButton_Click(System.Object sender,
System.EventArgs e)
{
// Cancel the asynchronous operation.
this.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.
Me.backgroundWorker1.CancelAsync()
' Disable the Cancel button.
cancelAsyncButton.Enabled = False
End Sub
Remarques
CancelAsync envoie une demande d’arrêt de l’opération d’arrière-plan en attente et définit la CancellationPending propriété sur true
.
Lorsque vous appelez CancelAsync, votre méthode worker a la possibilité d’arrêter son exécution et de la quitter. Le code worker doit régulièrement case activée la CancellationPending propriété pour voir si elle a été définie sur true
.
Attention
N’oubliez pas que votre code dans le DoWork gestionnaire d’événements peut terminer son travail à mesure qu’une demande d’annulation est en cours d’exécution, et que votre boucle d’interrogation peut ne pas être CancellationPending définie sur true
. Dans ce cas, l’indicateur Cancelled de dans votre RunWorkerCompleted gestionnaire d’événements System.ComponentModel.RunWorkerCompletedEventArgs n’est pas défini sur true
, 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 Bonnes pratiques en matière de threads managés.