如果我的线程中有一个正在处理某些数据的函数,那么它会调用回调函数来更新 UI 中的状态。
如果 UI 需要时间来处理回调函数,那么它就没那么有用了。 它不应该只在回调函数中处理更新,而是应该向 UI 发送某种消息,这样就不会阻塞?
我的意思是,当在处理函数中调用更新状态函数时,这应该立即返回到处理函数,然后在更新中它可以等待 UI 更新完成。
或者我是否需要第三个线程来处理向 UI 发送更新数据?
最佳答案
通常有一种方法可以将回调发布到 UI 线程而不发生阻塞。
例如:
- 在 Win32 上有 PostMessage
- 在 .NET Windows 窗体中,有 Control.BeginInvoke (实现 ISynchronizeInvoke.BeginInvoke )
- 在 Java 中,有 EventQueue.invokeLater
我确信,如果您查看您正在使用的 UI 工具包的文档,您会发现类似的内容。
关于multithreading - 从工作线程调用更新 UI 线程是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217645/