异步代理和窗口消息
Asynchronous Agents and window messages
我目前正在微软的并发运行时中使用异步代理库。我还没有找到一种明显的方法来表明任务已经完成,通过使用窗口消息,或其他方式通知UI线程,工作已经完成。
我知道我可以将窗口句柄和消息值(WM_xxx
)传递给任务,并让任务使用PostMessage()
向UI线程发送信号。在我看来,这有点丑陋,也是错误的来源。如果发生异常,我必须有一个catch处理程序来通知我的UI线程。这很容易被忘记,并且异常条件可能不会经常运行,因此很难发现它。
文档讨论了如何将数据移回UI线程。它不使用窗口消息,而是使用轮询技术。我发现设置计时器来轮询任务是否已经完成是愚蠢的,当有"中断"方法可用!
这不是内置在库中有点奇怪,因为它不是一个跨平台库。据我所知,它是为Windows系统设计的,而且只能在Windows系统上运行。
功能是否在库中可用,还是我必须手工滚动这个?
您可以创建一个监视线程,其唯一功能是监视windows消息的unbounded_buffer并适当地调度该消息。让代理知道这个缓冲区
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 输出窗口中消息的可视化工作室源
- 为什么初始化 Wintab 扩展后没有收到WT_PACKETEXT窗口消息?
- 与WM_DPICHANGED消息一起发送的建议窗口大小太大
- 如何处理窗口的消息?
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- 打印窗口发送消息WM_PAINT或WM_PRINT
- 如何处理来自多个窗口的消息
- C++/CLI 项目如何在控制台窗口中显示消息
- 向Qt窗口发布消息不会生效
- 什么是窗口最大化/最小化/恢复的WM Windows消息
- 查找窗口( ... ) 未"查找"创建的消息窗口
- 如何让 wndproc 处理发送到多个窗口的消息
- 如何在Qt中弹出消息窗口
- 在弹出窗口中管理CEF客户端区域的窗口消息
- 仅显示消息窗口中的电源状态更改通知
- 如何在控制台应用程序中使用仅消息窗口接收消息
- Windows:当我从本机代码回调到托管代码时,将显示“仅消息”窗口