Partilhar via


BackgroundWorker.CancelAsync Método

Definição

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 truecomo .

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 truecomo , 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.

Aplica-se a

Confira também