无人值守模式在一分钟后更改为暂停

时间:2012-11-28 15:04:48

标签: c# .net windows-mobile windows-ce power-management

在我的应用程序(C#,。Net CE 3.5,WM 6.5)中,我有一个与Web服务同步的线程。如果设备进入空闲模式,我希望线程继续运行。所以我使用一些Windows CE API,以无人值守模式运行我的线程,并在此过程中保持WiFi。 (来自here的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 个答案:

答案 0 :(得分:2)

AFAIK您还需要为您的应用程序使用SetPowerRequirement和/或定期使用SystemIdleTimerReset:http://www.brianpeek.com/category/Windows-Mobile

虽然在过去我没有使用SystemIdleTimerReset成功,而是将电池电源管理的超时时间更改为永不暂停并直接控制电源要求(请求无人值守模式)。