Второстепенный рабочий C#

У меня есть задача, работающая в backgroundworker. при нажатии на пользователя кнопки запуска, запускает процесс, и имейте одну кнопку отмены для отмены обработки.

Когда пользователь нажимает на отмену, я хотел бы показать окно сообщения, что "Процесс не был завершен, сделайте Вы хотите продолжить".

Здесь я хочу обработку, которую оставляют быть сделанной только после ввода данных пользователем. До того времени хочу остановить задний наземный поток. Может любой помогать мне на этом. Должен там так или иначе останавливать второстепенного рабочего в течение некоторого времени.Any, вид справки будет цениться.

7
задан Anees 18 July 2010 в 10:18
поделиться

2 ответа

Не встроено. Вы можете указать своему коду (на каждой [n] итерации цикла и т. Д.) Проверять что-то вроде ManualResetEvent , чтобы увидеть, должно ли оно продолжать работать (в то же время он проверяет отмену). Я не рекомендую приостанавливать поток ( Thread.Suspend ), так как вы не знаете, какие блокировки и т. Д. Он может удерживать в данный момент.

С другой стороны ... почему бы не дать ему поработать, пока вы не узнаете , что его нужно отменить? Тогда вам просто нужно проверять отмену (для этого есть флаг) каждые [n] итераций ...

5
ответ дан 7 December 2019 в 07:39
поделиться

Если BackgroundWorker работает с объектом, который виден обоим потокам, вы можете «заблокировать» этот объект, ожидая ответа пользователя на вопрос в диалоговом окне. Это приведет к остановке рабочего потока до тех пор, пока поток, генерирующий диалог, не завершит блокировку.

2
ответ дан 7 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: