BackgroundWorker.CancelAsync Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.