BackgroundWorker.CancelAsync Methode

Definition

Fordert das Abbrechen eines anstehenden Hintergrundvorgangs an.

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

Ausnahmen

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung der CancelAsync -Methode zum Abbrechen eines asynchronen ("Hintergrund")-Vorgangs. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die BackgroundWorker-Klasse bereitgestellt wird.

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

Hinweise

CancelAsync sendet eine Anforderung zum Beenden des ausstehenden Hintergrundvorgangs und legt die CancellationPending -Eigenschaft auf fest true.

Wenn Sie aufrufen CancelAsync, hat Ihre Workermethode die Möglichkeit, die Ausführung zu beenden und zu beenden. Der Workercode sollte die CancellationPending Eigenschaft regelmäßig überprüfen, um festzustellen, ob sie auf truefestgelegt wurde.

Achtung

Beachten Sie, dass Ihr Code im DoWork Ereignishandler möglicherweise seine Arbeit beendet, wenn eine Abbruchanforderung gestellt wird, und ihre Abfrageschleife möglicherweise nicht CancellationPending auf truefestgelegt wird. In diesem Fall wird das Cancelled Flag von System.ComponentModel.RunWorkerCompletedEventArgs in Ihrem RunWorkerCompleted Ereignishandler nicht auf truefestgelegt, obwohl eine Abbruchanforderung gestellt wurde. Diese Situation wird als Racebedingung bezeichnet und ist ein häufiges Problem bei der Multithreadprogrammierung. Weitere Informationen zu Multithreadingentwurfsproblemen finden Sie unter Best Practices für verwaltetes Threading.

Gilt für:

Weitere Informationen