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 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".