Поделиться через


BackgroundWorker.CancelAsync Метод

Определение

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

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

Исключения

Примеры

В следующем примере кода показано использование 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;
}
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

Комментарии

CancelAsync отправляет запрос на завершение ожидающей фоновой операции и задает для свойства значение CancellationPendingtrue.

При вызове CancelAsyncрабочий метод имеет возможность остановить его выполнение и выйти. Рабочий код должен периодически проверять CancellationPending свойство, чтобы узнать, задано ли оно.true

Предостережение

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

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

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