К сожалению, Windows не является ОС реального времени, и поэтому существует мало гарантий относительно того, когда выполняются потоки.Thread.Sleep ()
планирует только самое раннее время, когда поток должен проснуться следующим, это зависит от ОС, чтобы разбудить поток, когда есть свободное время.Точные критерии для пробуждения спящего потока, вероятно, не задокументированы, так что команда ядра Windows может изменить реализацию так, как они считают нужным.
Я не уверен, что объекты Timer решат эту проблему как поток пульса до сих порнеобходимо активировать после истечения времени таймера.
Одним из решений является повышение приоритета потока пульса, чтобы он мог выполнять чаще.
Тем не менее, сердцебиения обычно используются для определения, например, застряла ли подсистема в бесконечном цикле, поэтому они обычно имеют низкий приоритет.Если у вас интенсивная загрузка ЦП, выполните Thread.Sleep (0)
в ключевых точках, чтобы обеспечить возможность выполнения потоков с более низким приоритетом.