【问题标题】:Asynchronous Agents and window messages异步代理和窗口消息
【发布时间】:2011-09-12 21:34:53
【问题描述】:

我目前正在使用 Microsoft 的 Concurrency Runtime 中的异步代理库。我还没有找到一种明显的方法来通过使用窗口消息或其他通知 UI 线程工作已完成的方式来表示任务已完成。

我知道我可以将窗口句柄和消息值 (WM_xxx) 传递给任务,并让任务使用 PostMessage() 向 UI 线程发出信号。在我看来,这有点丑陋,并且是错误的来源。如果发生异常,我必须有一个 catch 处理程序来向我的 UI 线程发出信号。这很容易被遗忘,并且异常条件可能不会经常运行,因此很难发现。

文档讨论了如何将数据移回 UI 线程。它不使用窗口消息,而是使用轮询技术。当有可用的“中断”方法时,我觉得设置计时器来轮询任务是否完成是很愚蠢的!

这有点奇怪,它没有内置到库中,因为它不是跨平台库。据我了解,它设计为在 Windows 上运行,并且仅在 Windows 上运行。

库中是否有可用的功能,还是我必须手动滚动它?

【问题讨论】:

    标签: c++ visual-studio-2010 concurrency-runtime


    【解决方案1】:

    您可以创建一个监视线程,其唯一功能是监视 Windows 消息的 unbounded_buffer 并适当地分派该消息。让您的代理了解此缓冲区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2017-08-03
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多