Partilhar via


BackgroundWorker.CancelAsync Método

Definição

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.

Aplica-se a

Confira também