BackgroundWorker.CancelAsync Metod

Definition

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.

Gäller för

Se även