BackgroundWorker.CancelAsync Метод

Определение

Запрашивает отмену отложенной фоновой операции.Requests cancellation of a pending background operation.

public:
 void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()

Исключения

Свойство WorkerSupportsCancellation имеет значение false.WorkerSupportsCancellation is false.

Примеры

В следующем примере кода показано использование метода CancelAsync для отмены асинхронной ("фоновой") операции.The following code example demonstrates the use of the CancelAsync method to cancel an asynchronous ("background") operation. Этот пример кода является частью большого примера, приведенного для класса BackgroundWorker.This code example is part of a larger example provided for the BackgroundWorker class.

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

Комментарии

CancelAsync отправляет запрос на завершение ожидающей операции в фоновом режиме и устанавливает для свойства CancellationPending значение true.CancelAsync submits a request to terminate the pending background operation and sets the CancellationPending property to true.

При вызове CancelAsyncв рабочем методе можно прекратить выполнение и выйти из него.When you call CancelAsync, your worker method has an opportunity to stop its execution and exit. Рабочий код должен периодически проверять свойство CancellationPending, чтобы определить, установлено ли для него значение true.The worker code should periodically check the CancellationPending property to see if it has been set to true.

Внимание!

Имейте в виду, что код в обработчике событий DoWork может завершить свою работу в ходе выполнения запроса на отмену, и ваш цикл опроса может пропускаться CancellationPending заданным значением true.Be aware that your code in the DoWork event handler may finish its work as a cancellation request is being made, and your polling loop may miss CancellationPending being set to true. В этом случае Cancelled флаг System.ComponentModel.RunWorkerCompletedEventArgs в обработчике событий RunWorkerCompleted не будет установлен в значение true, даже если был сделан запрос на отмену.In this case, the Cancelled flag of System.ComponentModel.RunWorkerCompletedEventArgs in your RunWorkerCompleted event handler will not be set to true, even though a cancellation request was made. Такая ситуация называется состоянием гонки и является распространенной проблемой в многопоточном программировании.This situation is called a race condition and is a common concern in multithreaded programming. Дополнительные сведения о проблемах многопоточной разработки см. в разделе рекомендации по работе с потоками.For more information about multithreading design issues, see Managed Threading Best Practices.

Применяется к

Дополнительно