BackgroundWorker.CancelAsync Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 true
hodnotu .
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 true
hodnotu , 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.