C # фоновый рабочий - PullRequest
       1

C # фоновый рабочий

7 голосов
/ 18 июля 2010

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

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

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

Ответы [ 2 ]

5 голосов
/ 18 июля 2010

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

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

2 голосов
/ 18 июля 2010

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

...