BackgroundWorker.CancelAsync Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Solicita o cancelamento de uma operação em segundo plano pendente.
public:
void CancelAsync();
public void CancelAsync();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Exceções
Exemplos
O exemplo de código seguinte demonstra a utilização do CancelAsync método para cancelar uma operação assíncrona ("em segundo plano"). Este exemplo de código faz parte de um exemplo maior fornecido para a BackgroundWorker classe.
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
Observações
CancelAsync submete um pedido para terminar a operação pendente em segundo plano e define a CancellationPending propriedade para true.
Quando chama CancelAsync, o seu sistema de trabalho tem a oportunidade de parar a sua execução e sair. O código do trabalhador deve verificar periodicamente a CancellationPending propriedade para ver se foi definida para true.
Atenção
Tenha em atenção que o seu código no DoWork handler de eventos pode terminar o seu trabalho enquanto um pedido de cancelamento está a ser feito, e o seu ciclo de sondagens pode não CancellationPending ter sido definido para true. Neste caso, a Cancelled flag de System.ComponentModel.RunWorkerCompletedEventArgs no teu RunWorkerCompleted gestor de eventos não será definida para true, mesmo que tenha sido feito um pedido de cancelamento. Esta situação é chamada condição de corrida e é uma preocupação comum na programação multithread. Para mais informações sobre questões de design de multithreading, consulte Melhores Práticas de Gestão de Threading.