BackgroundWorker.CancelAsync Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Begäranden om annullering av en väntande bakgrundsåtgärd.
public:
void CancelAsync();
public void CancelAsync();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Undantag
Exempel
Följande kodexempel visar hur metoden används CancelAsync för att avbryta en asynkron åtgärd ("bakgrund"). Det här kodexemplet är en del av ett större exempel för BackgroundWorker klassen.
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
Kommentarer
CancelAsync skickar en begäran om att avsluta den väntande bakgrundsåtgärden CancellationPending och anger egenskapen till true.
När du anropar CancelAsynchar arbetsmetoden en möjlighet att stoppa körningen och avsluta den. Arbetskoden bör regelbundet kontrollera CancellationPending egenskapen för att se om den har angetts till true.
Caution
Tänk på att koden i DoWork händelsehanteraren kan slutföra sitt arbete när en begäran om annullering görs, och din avsökningsloop kan missa CancellationPending att anges till true. I det här fallet Cancelled anges inte flaggan System.ComponentModel.RunWorkerCompletedEventArgs för i händelsehanteraren RunWorkerCompleted till , trots att trueen begäran om annullering gjordes. Den här situationen kallas för ett konkurrenstillstånd och är ett vanligt problem inom flertrådad programmering. Mer information om designproblem med flera trådar finns i Metodtips för hanterad trådning.