gpt4 book ai didi

c++ - PocketPC c++ windows消息处理递归问题

转载 作者:行者123 更新时间:2023-11-28 08:31:52 26 4
gpt4 key购买 nike

我在大型应用程序中遇到问题,该问题似乎与 Pocket PC 上的 Windows 消息传递有关。我拥有的是一个用 C++ 编写的 PocketPC 应用程序。它只有一个标准的消息循环。

while (GetMessage (&msg, NULL, 0, 0)) { { 翻译消息 (&msg); DispatchMessage (&msg); }

我们也有标准的 dlgProc。在 dlgProc 的开关中,我们将调用专有的第 3 方 API。此 API 使用套接字连接与另一个进程通信。我看到的问题是:每当两条相同的消息快速出现时(用户点击屏幕两次太快,不应该如此),就好像创建了递归。 Windows 开始处理第一条消息,让 api 进入线程安全状态,然后跳转到处理下一条(相同的 ui)消息。好吧,因为第二条消息也进行了 API 调用,调用失败,因为它被锁定了。由于这个遗留系统的设计,API 将被锁定,直到递归返回(这也是由用户触发;因此它可能会锁定整个工作日)。我正在努力弄清楚为什么会发生这种情况以及我能做些什么。这是因为 windows 识别套接字通信需要时间并抢占它吗?有没有一种方法可以强制此 API 调用在抢占之前完成?有没有一种方法可以减慢消息处理速度或重新排队消息以确保第一个消息将执行(捕获它并将 PostMessage 返回给它自己没有用)。我们不想在第一次调用完成时锁定 ui。

非常感谢任何见解!谢谢!!

最佳答案

您可以通过例如同步对 API 的访问一个互斥量并将传入的作业保存在本地容器中,直到当前作业完成使用它。

关于c++ - PocketPC c++ windows消息处理递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com