Автоматический режим меняется на Приостановить через одну минуту

В моем приложении (C#, .Net CE 3.5, WM 6.5) у меня есть поток, который синхронизируется с веб-сервисом. Я хочу, чтобы поток продолжал работать, если устройство переходит в режим ожидания. Поэтому я использую некоторый API Windows CE, чтобы запустить мой поток в автоматическом режиме и поддерживать WiFi во время этого процесса. (API отсюда). Это работает отлично, и система переходит в режим ожидания, вместо этого приостанавливается и запускается поток с WiFi. Но через 1 минуту после ожидания устройство переходит в режим ожидания и выполнение останавливается.

Win32.CoreDLL.PowerPolicyNotify(Win32.PPNMessage.PPN_UNATTENDEDMODE, -1);
IntPtr wifiHabdle= Win32.CoreDLL.SetPowerRequirement(wifiDeviceName,  CEDEVICE_POWER_STATE.D1, DevicePowerFlags.POWER_NAME | DevicePowerFlags.POWER_FORCE, IntPtr.Zero, 0);

//Connect to web service and do jobs ...

Win32.CoreDLL.ReleasePowerRequirement(wifiHabdle);
Win32.CoreDLL.PowerPolicyNotify(Win32.PPNMessage.PPN_UNATTENDEDMODE, 0);

Когда я изменяю конфигурацию питания на устройстве и устанавливаю "Отключить экран, если устройство не используется" на 2 минуты, автоматический режим становится за 2 минуты до перехода в режим ожидания. (странное отношение). Как заставить устройство оставаться в автоматическом режиме?
пока я звоню PowerPolicyNotify(Win32.PPNMessage.PPN_UNATTENDEDMODE, 0)

1 ответ

Решение

AFAIK, вам нужно использовать SetPowerRequirement также для вашего приложения и / или периодически использовать SystemIdleTimerReset: http://www.brianpeek.com/category/Windows-Mobile

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

Другие вопросы по тегам