Как остановить фонового работника при запуске функции? - PullRequest
0 голосов
/ 12 октября 2018

В фоновом потоке выполняется последовательность обработки в виде последовательности функций, также есть форма с кнопкой отмены.Как обычно, кнопка отмены устанавливает бит CancellationPending.

Между каждым вызовом функции это проверяется:

If (worker.CancellationPending) Then
    e.Cancel = True
    Return
End If

Но если одна функция (например, для загрузки числафайлов) начинает показывать сообщения об ошибках, пользователь хочет остановить программу прямо там, вместо того, чтобы ждать, пока не завершится полная функция.Как я могу это сделать?

Я мог бы проверять бит worker.CancellationPending несколько раз в каждой функции, но я чувствую, что это может привести к действительно неудобному коду.

Есть ли способостановить фонового работника, когда он выполняет функцию?

1 Ответ

0 голосов
/ 12 октября 2018

Вы не можете.Просто завершить что-либо извне в произвольной точке - это вообще плохая идея, поэтому BackgroundWorker не поддерживает это.Вы можете создать свой собственный Thread, а затем вызвать Abort.Как правило, это не рекомендуется по той же причине, но, по крайней мере, возможно.

...