Vala,GTK:如何从不同的线程执行UI操作?

Vala,GTK:如何从不同的线程执行UI操作?,gtk,vala,Gtk,Vala,我有一个服务器在另一个线程中运行的端口上侦听消息。现在,一旦它收到一条消息,我需要它显示在一个文本框中 在Vala、GTK中是否有类似runOnUiThread()的方法(android中有)或等效方法 或者其他的选择是什么 与许多其他操作系统相比,显然您可以从非UI线程执行UI操作。我可以成功地从服务器线程更改条目的文本。但不确定是否建议这样做 用于在事件调度线程中调度某些内容: Idle.add(() => { textbox.Entry = "foo"; return Sou

我有一个服务器在另一个线程中运行的端口上侦听消息。现在,一旦它收到一条消息,我需要它显示在一个文本框中

  • 在Vala、GTK中是否有类似runOnUiThread()的方法(android中有)或等效方法

  • 或者其他的选择是什么


  • 与许多其他操作系统相比,显然您可以从非UI线程执行UI操作。我可以成功地从服务器线程更改
    条目的文本。但不确定是否建议这样做

    用于在事件调度线程中调度某些内容:

    Idle.add(() => {
      textbox.Entry = "foo";
      return Source.REMOVE;
    });
    

    不是。GTK+不是线程安全的。您可以使用
    g\u idle\u add
    注册回调,以便从主线程调用一些代码。在它之外不应该做任何UI工作。这最终会咬到你。