Я пишу приложение Windows, которое многократно выполняет последовательность цифровых операций ввода-вывода.Как полностью «убить» рабочего фонаря?
Эта последовательность действий начинается, когда пользователь нажимает кнопку «СТАРТ», и это делается фоновым работником в backgroundWorker1_DoWork().
Однако, есть случаи, когда я получаю сообщение об ошибке «Этот рабочий стол в настоящее время .......».
Я имею в виду реализации следующих в коде, используя время цикла, чтобы «убить» фона рабочего до начала другой последовательности действий:
if (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
while (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
}
backgroundWorker1.Dispose();
}
backgroundWorker1.RunWorkerAsync();
Я думаю, моя основная проблема в том, будет ли backgroundWorker1 будет «убит» в конце концов? Если так будет, потребуется много времени для его завершения?
Будет ли это кодирование заводить меня в бесконечный цикл?
Зачем вам нужен цикл? Разве не убил бы это когда-нибудь, значит, он больше не занят? – Louis
Кроме того, было бы разумно поспать там, что подходит для приложения. Также, что происходит, если рабочий законно занят? Вы все еще хотите, чтобы это убило его в середине процесса? Я думаю, что было бы разумнее остановить то, что когда-либо заставляло фонового работника становиться бесконечно занятым. – Louis