Freigeben über


BackgroundWorker.CancelAsync Methode

Definition

Fordert den Abbruch eines ausstehenden 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;
}
void cancelAsyncButton_Click(object sender,
    EventArgs e)
{
    // Cancel the asynchronous operation.
    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.
    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 true.

Wenn Sie aufrufen CancelAsync, hat ihre Arbeitsmethode die Möglichkeit, die Ausführung und beendigung zu beenden. Der Arbeitscode sollte die CancellationPending Eigenschaft in regelmäßigen Abständen überprüfen, um festzustellen, ob sie auf . festgelegt truewurde.

Vorsicht

Beachten Sie, dass ihr Code im DoWork Ereignishandler seine Arbeit möglicherweise beendet, wenn eine Abbruchanforderung ausgeführt wird, und die Abfrageschleife kann nicht CancellationPending auf true"festgelegt" festgelegt werden. In diesem Fall wird das Cancelled Flag des System.ComponentModel.RunWorkerCompletedEventArgsRunWorkerCompleted Ereignishandlers nicht auf truefestgelegt, auch wenn eine Abbruchanforderung gestellt wurde. Diese Situation wird als Racebedingung bezeichnet und ist ein häufiges Anliegen bei der Multithread-Programmierung. Weitere Informationen zu Problemen mit dem Multithreading-Entwurf finden Sie unter "Bewährte Methoden für verwaltete Threading".

Gilt für:

Weitere Informationen