BackgroundWorker.CancelAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Żą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 true
wartość .
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ć CancellationPendingtrue
ustawienie . W takim przypadku flaga CancelledSystem.ComponentModel.RunWorkerCompletedEventArgs elementu w RunWorkerCompleted programie obsługi zdarzeń nie zostanie ustawiona na true
wartość , 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).