BackgroundWorker.CancelAsync Metodo

Definizione

Richiede l'annullamento di un'operazione in background in attesa.

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

Eccezioni

Esempio

Nell'esempio di codice seguente viene illustrato l'uso del CancelAsync metodo per annullare un'operazione asincrona ("in background"). Questo esempio di codice fa parte di un esempio più ampio fornito per 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

Commenti

CancelAsync invia una richiesta per terminare l'operazione in background in sospeso e imposta la CancellationPending proprietà su true.

Quando si chiama CancelAsync, il metodo di lavoro ha l'opportunità di arrestarne l'esecuzione e uscire. Il codice del ruolo di lavoro deve controllare periodicamente la CancellationPending proprietà per verificare se è stata impostata su true.

Attenzione

Tenere presente che il codice nel DoWork gestore eventi può terminare il proprio lavoro durante l'esecuzione di una richiesta di annullamento e il ciclo di polling potrebbe non CancellationPending essere impostato su true. In questo caso, il Cancelled flag di System.ComponentModel.RunWorkerCompletedEventArgs nel RunWorkerCompleted gestore eventi non verrà impostato su true, anche se è stata effettuata una richiesta di annullamento. Questa situazione è detta race condition ed è un problema comune nella programmazione multithreading. Per altre informazioni sui problemi di progettazione del multithreading, vedere Procedure consigliate per il threading gestito.

Si applica a

Vedi anche