У меня есть фоновый рабочий процесс, который регулярно обновляет графический интерфейс через 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;
}
}