5

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

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

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

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

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

4

1 回答 1

1

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

于 2012-06-08T14:47:42.890 回答