我正在尝试将GTK(通过gtk-sharp绑定在.NET应用程序中)集成到已经具有“主循环”的应用程序中。调用Gtk.Application.Run()
会导致整个事情在等待Gtk循环时基本上锁定。此外,这个应用程序无法真正按照通常的意义集成到GTK中(也就是说,使用GTK的空闲内容来为应用程序提供事件)。
有没有办法做相反的事情并手动运行GTK主事件循环?
现在我有这样的事情:
def _pump_gtk():
while true:
if Gtk.Application.EventsPending():
Gtk.Application.RunIteration()
yield
(产量是因为_pump_gtk在主应用程序中作为协程运行)
然而,这似乎有问题,因为Gtk认为没有主循环运行?我收到了很多Gtk-CRITICAL **: gtk_main_quit: assertion main_loops != NULL' failed
个错误。
有没有办法手动运行GTK主循环?