0

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

4

1 回答 1

2

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

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

于 2012-11-29T19:09:05.457 回答