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 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 a seguir demonstra o uso do CancelAsync método para cancelar uma operação assíncrona ("background"). 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
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 verificar periodicamente a CancellationPending propriedade para ver se ela foi definida como true.
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 seu loop de sondagem pode perder CancellationPending a definição truecomo . Nesse caso, o Cancelled sinalizador do manipulador RunWorkerCompleted de System.ComponentModel.RunWorkerCompletedEventArgs eventos não será definido comotrue, 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 multithreaded. Para obter mais informações sobre problemas de design multithreading, consulte As Práticas Recomendadas de Threading Gerenciado.