Предположим, у меня есть простая фоновая задача, которая регистрирует каждые 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
Что можно сделать с «Дрифтом таймера»? Фоновые задачи не проверяются точно на миллисекунд ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение