我没有OpenNetCF.WindowsCE的源代码来说肯定有什么区别。我会查看代码或使用我的电源监视器工具查看OpenNetCF和BattSuspendTimeout输入的确切电源模式。如您所知,定义了几种电源模式:http://msdn.microsoft.com/en-us/library/aa929251.aspx
我的电源监视器位于https://github.com/hjgode/logging_ce/tree/master/PowerMsgLog。
如果ctacke正在读您的文章,他可能会说确切的代码背后是什么OpenNetCF.WindowsCE ...
OK,我挖吧:
public static void Suspend()
{
if (NativeMethods.SetSystemPowerState(IntPtr.Zero, PowerStateFlags.Suspend, 4096) != 0)
{
NativeMethods.GwesPowerOff();
}
}
现在我们仍然不知道,该方法用于:
SetSystemPowerState(IntPtr.Zero, PowerStateFlags.Suspend, 4096)
或
GwesPowerOff();
请试试我的powerMsgLog工具。
我看到这些差异:
OpenNetCF:
09:40:42 ReadMsgQueue:
09:40:42 ReadMsgQueue: PBT_POWERINFOCHANGE
09:41:00 ReadMsgQueue:
09:41:00 ReadMsgQueue: PBT_POWERINFOCHANGE
09:41:12 ReadMsgQueue: PBT_POWERINFOCHANGE
09:41:24 ReadMsgQueue: PBT_POWERINFOCHANGE
09:41:27 ReadMsgQueue: suspend
设备是 '关闭'
09:41:31 ReadMsgQueue: resuming
09:41:32 ReadMsgQueue:
09:41:32 ReadMsgQueue: on
09:41:43 ReadMsgQueue: PBT_POWERINFOCHANGE
电源按钮:
09:41:55 ReadMsgQueue: PBT_POWERINFOCHANGE
**09:41:56 ReadMsgQueue: unattended**
09:41:56 ReadMsgQueue: suspend
设备是 '关闭'
09:42:04 ReadMsgQueue: resuming
09:42:06 ReadMsgQueue:
09:42:06 ReadMsgQueue: on
09:42:07 ReadMsgQueue: on
09:42:16 ReadMsgQueue:
09:42:16 ReadMsgQueue: PBT_POWERINFOCHANGE