предотвратить ранний запуск Task.Delay - PullRequest
0 голосов
/ 21 октября 2019

Я узнал, что 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);

но такой подход выглядит странно и грязно.

...