Как сразу отменить работающий BackgroundWorker?

c# backgroundworker

3983 просмотра

1 ответ

У меня есть время, затрачиваемое на DoWorkмой BackgroundWorker.

Всякий раз, когда я пытаюсь отменить задание backgroundWorker1.CancelAsync(), оно backgroundWorker1.CancellationPendingстановится ожидающим, и я должен ждать следующей итерации, DoWork чтобы отменить задание и выйти из него самому.

Есть ли способ отменить задание сразу после его вызова?

Автор: mammadalius Источник Размещён: 12.11.2019 09:20

Ответы (1)


7 плюса

Решение

Нет. Как правило, вы не можете безопасно прекратить поток «немедленно», потому что он может содержать ресурсы, которые могут утечь, и, что более важно, он может содержать блокировки. Вы должны структурировать своего работника так, чтобы он соблюдал флаг отмены и как можно быстрее выходил.

Автор: Derek Park Размещён: 09.02.2012 06:13
Вопросы из категории :
32x32