Gtkmm:如何从另一个线程更新 UI?连续不断

Posted

技术标签:

【中文标题】Gtkmm:如何从另一个线程更新 UI?连续不断【英文标题】:Gtkmm : How to update UI from another thread? continuously 【发布时间】:2012-05-27 13:42:50 【问题描述】:

线程 A:运行 Gtkmm 消息循环的 UI 线程。

线程 B:通过网络接收数据并将其记录到文件中。

现在我希望在线程 B 中转储到文件中的相同数据也同时显示在 UI 上的 Gtk::TextView 中。最好的方法是什么?

Glib::Dispatcher 不带数据。所以它只适用于通知已完成的工作。

libSigCX 让我很难过。

【问题讨论】:

【参考方案1】:

我会尝试使用Glib::Dispatcher 以及Glib::Threads::Mutex(或等效)受保护的std::queue<std::string> 数据结构。将每个工作项放入队列后,使用调度程序通知 UI 线程。

【讨论】:

【参考方案2】:

您可能应该将 UI 结构指针作为参数传递给线程 B。该结构已经分配了所有信号,您可以使用 TextView。

【讨论】:

以上是关于Gtkmm:如何从另一个线程更新 UI?连续不断的主要内容,如果未能解决你的问题,请参考以下文章

您可以从另一个线程访问 UI 元素吗? (不设置)

从另一个线程更新 ObservableCollection

如何将调色板图像从另一个线程生成到 WPF UI 线程?

从另一个线程更新 excel 电子表格

Vaadin 服务器从另一个线程推送

ProgressBar从另一个线程更新