【发布时间】:2018-03-22 12:16:47
【问题描述】:
我有一台服务器正在侦听在不同线程中运行的端口上的消息。现在,一旦它收到一条消息,我需要将其显示在文本框中。
是否有类似 runOnUiThread()(在 android 中)或 Vala、GTK 中的等效方法?
否则有什么替代方案?
【问题讨论】:
我有一台服务器正在侦听在不同线程中运行的端口上的消息。现在,一旦它收到一条消息,我需要将其显示在文本框中。
是否有类似 runOnUiThread()(在 android 中)或 Vala、GTK 中的等效方法?
否则有什么替代方案?
【问题讨论】:
使用GLib.Idle.add 在事件调度线程中安排一些事情:
Idle.add(() => {
textbox.Entry = "foo";
return Source.REMOVE;
});
【讨论】:
与许多其他操作系统相比,显然您可以从非 UI 线程执行 UI 操作。我可以成功地从服务器线程更改Entry 的文本。不确定这是否被推荐。
【讨论】:
g_idle_add 注册一个回调,以便从主线程调用一些代码。不应在它之外完成任何 UI 工作。