BackgroundWorker.CancelAsync Metoda

Definicja

Żąda anulowania oczekującej operacji w tle.

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

Wyjątki

Przykłady

W poniższym przykładzie kodu pokazano użycie CancelAsync metody w celu anulowania operacji asynchronicznej ("w tle"). Ten przykład kodu jest częścią większego przykładu udostępnionego BackgroundWorker dla klasy .

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

Uwagi

CancelAsync przesyła żądanie zakończenia oczekującej operacji w tle i ustawia CancellationPending właściwość na true.

Gdy wywołasz CancelAsyncmetodę , metoda procesu roboczego ma możliwość zatrzymania jej wykonywania i zakończenia. Kod procesu roboczego powinien okresowo sprawdzać właściwość , CancellationPending aby sprawdzić, czy została ustawiona na truewartość .

Przestroga

Należy pamiętać, że kod w procedurze DoWork obsługi zdarzeń może zakończyć pracę w trakcie żądania anulowania, a pętla sondowania może przegapić CancellationPending trueustawienie . W takim przypadku flaga Cancelled System.ComponentModel.RunWorkerCompletedEventArgs elementu w RunWorkerCompleted programie obsługi zdarzeń nie zostanie ustawiona na truewartość , mimo że zostało wykonane żądanie anulowania. Ta sytuacja jest nazywana warunkiem wyścigu i jest częstym problemem w programowaniu wielowątkowym. Aby uzyskać więcej informacji na temat problemów z projektowaniem wielowątkowym, zobacz Managed Threading Best Practices (Najlepsze rozwiązania dotyczące zarządzanych wątków).

Dotyczy

Zobacz też