Что можно сделать с «Дрифтом таймера»? Фоновые задачи не проверяются точно на миллисекундC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Что можно сделать с «Дрифтом таймера»? Фоновые задачи не проверяются точно на миллисекунд

Сообщение Anonymous »

Предположим, у меня есть простая фоновая задача, которая регистрирует каждые 15 секунд. < /p>
protected override async Task ExecuteAsync( CancellationToken stoppingToken )
{
while ( !stoppingToken.IsCancellationRequested )
{
// append some line to a log file
await Task.Delay( 15 * 1000, stoppingToken );
}
}
< /code>
Я заметил, что в журнале какое-то время покажет каждую пятнадцать секунд, но в конечном итоге это займет немного больше времени, чем 15 секунд. Так что я мог бы увидеть: < /p>
hello 02
hello 17
hello 32
hello 47
hello 02
hello 17
hello 32
hello 47
hello 02
hello 18
Что можно сделать с этим «дрифтом»? В этом примере это не так важно, но некоторые задачи выполняют минуту (не обязательно на второй части минуты 00), и, основываясь на этом «дрейфе», который я вижу, возможно, что он может пропустить минуту. Следовательно, возможно, что выполнение задачи может не произойти, потому что она проснулась в 7: 59,98 и снова в 8: 01.02, но задача, которую я хотел запустить, была в 8:00.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ecisely-on
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»