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;
}
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, даже если был выполнен запрос на отмену. Эта ситуация называется состоянием гонки и является распространенной проблемой в многопоточных программированиях. Дополнительные сведения о проблемах проектирования с несколькими потоками см. в статье "Рекомендации по управлению потоками".