【发布时间】:2012-11-28 15:04:48
【问题描述】:
在我的应用程序(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)
【问题讨论】:
-
AFAIK 您还需要为您的应用程序使用 SetPowerRequirement 或定期使用 SystemIdleTimerReset:brianpeek.com/category/Windows-Mobile ~ josef
-
@josef,这是正确的答案。把它作为一个答案,这样你就可以得到它的功劳。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# .net windows-mobile windows-ce power-management