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

Aplica-se a

Ver também