关于C#:GTK:将函数调用委托给主线程

GTK: Delegate function call to main thread

我在将函数调用从工作线程委托给主线程时遇到一些问题。由于无法从辅助线程调用GTK,因此我想将此调用委托给主线程来为我完成。该函数应尽快在主线程上调用。

我尝试了以下操作:

1
2
g_idle_add(myfunc, myargs);
g_main_context_wakeup(NULL);

但这不起作用。 myfunc()不会立即被调用,而只会在其他一些输入似乎触发主循环时才被调用。我真的不明白为什么它不起作用。 g_main_context_wakeup()是否不应该唤醒主循环?

我的主循环如下:

1
2
loop = g_main_loop_new(NULL, FALSE);
while(!quit) g_main_context_iteration(NULL, TRUE);

有什么想法吗?


要回答我自己的问题,此操作不起作用,因为我使用的是旧的GTK版本,该版本要求先通过调用g_thread_init()显式启用多线程。一旦我调用g_thread_init(),g_main_context_wakeup()就可以正常工作了。