BackgroundWorker.CancelAsync Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 true
festgelegt 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 true
festgelegt wird. In diesem Fall wird das Cancelled Flag von System.ComponentModel.RunWorkerCompletedEventArgs in Ihrem RunWorkerCompleted Ereignishandler nicht auf true
festgelegt, 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.