Отправить фоновый рабочий процесс в спящий режим при проверке отмены

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

Обновление происходит через равные промежутки времени, например, каждые 5 секунд или 20 секунд.Чтобы выполнить обновление в установленное время, я отправляю рабочий процесс в спящий режим на время, и когда он просыпается, он обновляет графический интерфейс новой информацией.

Рабочий процесс поддерживает отмену, и вне режима сна отменяется корректно.

Я хочу иметь возможность вызвать отмену в течение периода ожидания, однако отправка потока в спящий режим делает это невозможным.

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

Каков наилучший метод для достижения этой цели? Мое время совершенно не соответствует моей попытке.

            long counter = 0;
            long sleepfor = timelinespeed*1000;
            int timelinespeed = 10;

                while (counter != sleepfor)
                {

                    Thread.Sleep(1);

                    counter++;

                    if (bkgwk.CancellationPending)
                    {
                        cancelled = true;
                        e.Cancel = true;
                        bkgwk.Dispose();
                        break;
                    }

                }
5
задан Damo 23 April 2012 в 20:26
поделиться