WINCE6.0系统挂起时没有等APP处理完就挂起的问题

loongembedded
博客专家认证
2015-05-27 10:37:53
大家好,我们是WINCE6.0系统,开机后自动运行一个APP,此APP如果收到挂起的消息,如果当前系统已将连接了3G,则先断开3G连接,可是经过测试发现,系统并没有等到断开3G连接的动作完成之后就挂起了。如何才能保证让这个动作执行完,设备才挂起,在这里请教大家了,先谢谢。
...全文
211 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loongembedded 2015-06-02
  • 打赏
  • 举报
回复
我现在改为在电源管理驱动PM.DLL发送挂起消息之前先断开,这样就可以了。
LouisScola 2015-06-01
  • 打赏
  • 举报
回复
按道理说系统suspend API应该会提供系统事件处理完成再挂起的功能,如果真的没有就只能自己实现了,修改suspend机制
简单并快乐着 2015-05-28
  • 打赏
  • 举报
回复
引用 1 楼 accessysq 的回复:
既然APP能收到消息,那么系统不处理这个消息,又APP处理完自己的事物,然后APP执行挂起的动作。缺点是这个系统如果没有这只app将不会挂起。不过简单。 改进一下,定义个一个带名字的互斥量或者事件什么都行,又APP创建,然后系统收到挂起信息,先判断这个[事件]是否有存在,存在表示APP已经运行,你就像等待APP处理完自己的事务,然后给这个[事件]一个信号,这样系统收到信号再挂起。适当设定一个超时的时间,app没给信号也挂起,这样或许更合理一些。
觉得这个方式可以实现,O(∩_∩)O~,偶尔还是要来wince论坛看看的。
91program 2015-05-27
  • 打赏
  • 举报
回复
如果如 LZ 你所说,依赖于系统的机制无法达到目标,就只能自己来实现。 例如:在发送挂起消息前,可以先通过 SendMessage 发送消息到 App,然后再执行挂起。这样 App 在接收到 SendMessage 的消息后就断开 3G! 虽然,这样做不好:从驱动或系统直接向某个 App 发消息是不推荐的。但是可以实现系统本身无法实现的问题。
  • 打赏
  • 举报
回复
既然APP能收到消息,那么系统不处理这个消息,又APP处理完自己的事物,然后APP执行挂起的动作。缺点是这个系统如果没有这只app将不会挂起。不过简单。 改进一下,定义个一个带名字的互斥量或者事件什么都行,又APP创建,然后系统收到挂起信息,先判断这个[事件]是否有存在,存在表示APP已经运行,你就像等待APP处理完自己的事务,然后给这个[事件]一个信号,这样系统收到信号再挂起。适当设定一个超时的时间,app没给信号也挂起,这样或许更合理一些。
loongembedded 2015-05-27
  • 打赏
  • 举报
回复
非常感谢大家提供的思路,我接下来会验证,到时候会分享出来,大家如何还有其他思路,欢迎分享出来,先谢谢了。

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧