Использование timeBeginPeriod(1) (из Windows API) вы можете установить более высокое разрешение - 1 мс.
К сожалению, в Windows 11 такое увеличение разрешения не гарантируется, если процесс владения окном сворачивается, согласно найденной документации. здесь:
https://learn.microsoft.com/en-us/windo ... -timebegin period#:~:text=Начиная с Windows 11%2C, если владелец окна процесс становится полностью закрытым%2C, свернутым%2C или иным образом невидимым или неслышимым для конечного пользователя%2C. Windows не гарантирует более высокое разрешение, чем разрешение системы по умолчанию. Дополнительную информацию об этом поведении см. в SetProcessInformation.
Есть ли способ гарантировать более высокое разрешение таймера в Windows 11 и более поздних версиях, даже если окно свернуто? Или есть альтернатива timeBeginPeriod, которая может достичь такого разрешения?
Причина, по которой я спрашиваю:
Мы хотим начать опрос некоторых высокоточных инструментов с интервалом 1 мс в течение последовательный порт и собирать эти данные, даже когда опрашивающее приложение свернуто.
Интересные примечания:
- Это не обязательно должно быть именно так. 1 мс, 1,342 мс тоже подойдет, но оно должно быть примерно таким, а не разрешением таймера по умолчанию, равным 15,6 мс.
- Мы используем C# и WinUI для интерфейса
- Опрос выполняется вне основного потока
- Да, мы используем timeEndPeriod, чтобы остановить его.
Подробнее здесь: https://stackoverflow.com/questions/786 ... p-is-fully