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