我正在开发在 .NET Compact 3.5 上运行的 Windows Mobile 6.1/6.5 应用程序。这个应用程序多年来一直在旧的 HP iPaq 210 上成功运行,但我在让它在 Socket SoMo 655 上运行时遇到了一些麻烦。
除了 OpenNETCF 库的 LargeIntervalTimer 功能外,几乎所有东西都可以正常工作。如果设备与 PC 保持连接,则计时器确实可以工作,但否则设备会进入暂停模式,该计时器无法唤醒。
现在,这就是 LargeIntervalTimer 的全部目的。它唤醒已进入挂起模式的设备,以便它可以执行某种任务。它在 iPaq 上正常工作,将它从看似任何类型的睡眠模式中唤醒。但是,在 SoMo 上,当设备放置足够长的时间以关闭时,计时器不会触发。
有没有人有任何想法?是否有另一种方法可以将设备从我可以在托管代码中使用的任何电源状态唤醒?
编辑:
感谢 Josef 的有用建议,感谢您不厌其烦地编写测试应用程序。据我所知,该事件已正确添加到数据库中。如果我运行您的应用程序并立即按开始,然后按停止,我会看到有 1 个新条目(由测试应用程序本身创建的条目)。但是,如果我在切换回并按停止之前先按开始,然后打开我自己的应用程序,我会得到 2 个新条目。这对两种设备都是如此,工作的 iPaq 和有问题的 Socket。
我认为问题一定与允许设备进入挂起模式后 Socket 的电源状态有关。当 Socket 通过 USB 连接到我的 PC 时,LargeIntervalTimer 可以正常工作,我认为这是因为设备在连接时永远不会完全进入睡眠状态。但是,如果我拔下设备并允许它进入挂起模式,则计时器根本不会激活。
无论如何,谢谢你的帮助。我仍然对想法持开放态度,但似乎没有一个我刚刚忽略的简单解决方案......
编辑2:
我注意到 Socket SoMo 655 运行的是 Windows CE,而 Socket SoMo 650(应用程序在其上运行良好)运行的是 Windows Mobile 6.5。这些干扰 OpenNETCF 库的移动操作系统之间是否存在差异?