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