Время работы приложений Windows 11 становится неравномерным в «фоновом режиме»C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Время работы приложений Windows 11 становится неравномерным в «фоновом режиме»

Сообщение Anonymous »


У меня есть приложение для Windows, которое должно делать что-то каждые 40 миллисекунд (на самом деле его можно настроить на что угодно, но типичная настройка — 40 мс). У него достаточно времени для выполнения своих задач, поэтому большую часть этого времени он простаивает, но ему необходимо отправлять отчеты через определенные промежутки времени. Мы постоянно отслеживаем, занимает ли отчет в реальности больше или меньше 40 миллисекунд.

В Windows 7, 8 или 10 все работало хорошо. В Windows 11 возникла новая проблема: приложение работает хорошо только до тех пор, пока его окна не скрыты. Если его окна скрыты за развернутым окном другого приложения (Firefox, блокнот и т. д.), то через 5 секунд время становится неровным: превышение предельного срока в 40 мс, затем отставание для компенсации, затем снова превышение. , и так далее. Если вы вернетесь в окно нашего приложения с помощью Alt-Tab, вам придется подождать еще 5 секунд, но затем время снова станет плавным.

Это происходит только в том случае, если приложение находится за развернутым окном: если окна приложения скрыты за не-окном блокнота и где-то виден лишь небольшой кусочек пустого рабочего стола, то время остается гладким все время.

Похоже, что оконный менеджер Windows 11 принимает решение, основываясь на максимизации блокнота или чего-то еще, перевести наше приложение в своего рода «фоновый» режим. Что это за режим? Может ли мое приложение выполнить какой-нибудь вызов Windows API, чтобы предотвратить переход в этот режим?

Мы нашли один способ сделать это хуже: если мы зарегистрируем процесс с помощью SetCurrentProcessExplicitAppUserModelID(), то мы получим другое поведение: а именно, мы получим ровно 10 секунд » стоит хорошей производительности, то она становится плохой и остается плохой независимо от того, находимся ли мы на переднем плане или на заднем плане. Это может быть подсказкой, но я не уверен, в каком направлении она указывает, чтобы решить исходную проблему.

Если это актуально: наше приложение написано на C++, скомпилировано с помощью MSVC и использует Qt 6 для своих окон.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»