异步代理和窗口消息

Jör*_*son 5 c++ visual-studio-2010 concurrency-runtime

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

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

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

这有点奇怪,它没有内置到库中,因为它不是跨平台库.根据我的理解,它被设计为仅在Windows和Windows上运行.

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

Yur*_*tya 1

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