BackgroundWorker.CancelAsync Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Solicita o cancelamento de uma operação pendente em segundo plano.
public:
void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Exceções
Exemplos
O exemplo de código a seguir demonstra o uso do CancelAsync método para cancelar uma operação assíncrona ("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;
}
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
Comentários
CancelAsync envia uma solicitação para encerrar a operação em segundo plano pendente e define a CancellationPending propriedade como true
.
Quando você chama CancelAsync, seu método de trabalho tem a oportunidade de interromper sua execução e sair. O código de trabalho deve marcar periodicamente a CancellationPending propriedade para ver se ela foi definida true
como .
Cuidado
Lembre-se de que seu DoWork código no manipulador de eventos pode concluir seu trabalho à medida que uma solicitação de cancelamento está sendo feita, e o loop de sondagem pode perder CancellationPending a definição como true
. Nesse caso, o Cancelled sinalizador de System.ComponentModel.RunWorkerCompletedEventArgs em seu RunWorkerCompleted manipulador de eventos não será definido true
como , mesmo que uma solicitação de cancelamento tenha sido feita. Essa situação é chamada de condição de corrida e é uma preocupação comum na programação multithread. Para obter mais informações sobre problemas de design multithreading, consulte Práticas recomendadas de threading gerenciado.