5
我目前正在使用微软的Concurrency Runtime中的异步代理库。我还没有找到一个明显的方式来通过使用窗口消息或其他通知UI线程完成工作的方式来指示任务已完成。异步代理和窗口消息
我知道我可以将窗口句柄和消息值(WM_xxx
)一起传递给任务,并让任务使用PostMessage()
来发信号通知UI线程。这在我看来有点难看,并且是错误的根源。如果发生异常,我必须有一个捕获处理程序来发信号给我的UI线程。这很容易被遗忘,异常情况可能不会经常运行,所以很难发现它。
该文档讨论了如何将数据移回UI线程。它不使用窗口消息,而是使用轮询技术。当发现有“中断”方法时,我觉得设置定时器来轮询任务是否完成是很愚蠢的!
有点奇怪,这不是内置于库中,因为它不是跨平台库。据我所知,它只能在Windows和Windows上运行。
库中是否提供了该功能,或者是否必须手动执行此操作?