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

私の知る限り、アプリケーションにも SetPowerRequirement を使用するか、定期的に SystemIdleTimerReset を使用する必要があります: http://www.brianpeek.com/category/Windows-Mobile

ただし、以前は SystemIdleTimerReset で成功しなかったため、代わりにバッテリー電源管理のタイムアウトを変更して、決して中断せず、電力要件を直接制御する (無人モードを要求する) ようにしました。

于 2012-11-29T19:09:05.457 に答える