Share via


BackgroundWorker.CancelAsync Metoda

Definice

Požaduje zrušení čekající operace na pozadí.

public:
 void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()

Výjimky

Příklady

Následující příklad kódu ukazuje použití CancelAsync metody ke zrušení asynchronní ("pozadí") operace. Tento příklad kódu je součástí většího příkladu BackgroundWorker pro třídu.

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

Poznámky

CancelAsync odešle žádost o ukončení čekající operace na pozadí a nastaví CancellationPending vlastnost na true.

Když zavoláte CancelAsyncmetodu pracovního procesu, bude moct zastavit provádění a ukončit. Kód pracovního procesu by měl vlastnost pravidelně kontrolovat CancellationPending a zjistit, jestli je nastavená na truehodnotu .

Upozornění

Mějte na paměti, že váš kód v DoWork obslužné rutině události může dokončit svou práci při vytváření žádosti o zrušení a že smyčka dotazování nemusí být CancellationPending nastavená na true. V tomto případě Cancelled se příznak System.ComponentModel.RunWorkerCompletedEventArgsRunWorkerCompleted v obslužné rutině události nenastaví na truehodnotu , i když byl proveden požadavek na zrušení. Tato situace se nazývá konflikt časování a je běžným problémem při programování s více vlákny. Další informace o problémech s návrhem multithreadingu najdete v tématu Osvědčené postupy pro spravovaná vlákna.

Platí pro

Viz také