Я узнал, что Task.Delay
может завершиться немного раньше, как описано в документации https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.delay?view=netframework-4.8
Этот метод зависит от системных часов. Это означает, что временная задержка будет приблизительно равна разрешению системных часов, если аргумент задержки меньше, чем разрешение системных часов, что составляет приблизительно 15 миллисекунд в системах Windows.
Как мнепредотвратить его завершение даже на 1 мс раньше? Скажем, мне нужен следующий код:
await Task.Delay(1000);
для продолжения по крайней мере через 1000 мс, но не раньше.
Лучший код, который я могу придумать, который не продолжается раньше, чем после 1000мс:
await Task.Delay(1000+16);
но такой подход выглядит странно и грязно.