BackgroundWorker.CancelAsync Метод

Определение

Запрашивает отмену отложенной фоновой операции.

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

Исключения

WorkerSupportsCancellation имеет значение false.

Примеры

В следующем примере кода показано использование CancelAsync метода для отмены асинхронной (фоновой) операции. Этот пример входит в состав более крупного примера использования класса BackgroundWorker.

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метода рабочей роли есть возможность остановить его выполнение и выйти из нее. Рабочий код должен периодически проверка свойство , CancellationPending чтобы узнать, задано ли ему значение true.

Внимание!

Имейте в виду, что код в обработчике DoWork событий может завершить работу по мере отправки запроса на отмену, а для цикла опроса может не CancellationPending быть задано значение true. В этом случае Cancelled флаг System.ComponentModel.RunWorkerCompletedEventArgs в RunWorkerCompleted обработчике событий не будет иметь значение true, даже если был сделан запрос на отмену. Эта ситуация называется состоянием гонки и является общей проблемой в многопотоковом программировании. Дополнительные сведения о проблемах многопоточности см. в статье Рекомендации по использованию управляемых потоков.

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

См. также раздел