使用Python 2.6,Twisted 10.1和GTK + 2.22,安装了最新的pygtk,我在关机时遇到了问题。当我关闭我的应用程序并关闭反应器时(当然使用gtk2reactor
),应用程序只是冻结。
我在扭曲的源周围戳了戳并添加了调试消息。最终发生的事情是'shutdown'
事件触发,PortableGtkReactor.crash
被调用,调用gtk.main_quit
。该事件在ReactorBase.runUntilCurrent
结束时处理。当函数返回时,控制转到ReactorBase.iterate
,它将控制返回到PortableGtkReactor.simulate
,然后返回到gtk.main()
调用。看起来gtk
似乎没有退出。
不幸的是,当我将一个非常简单的示例与twisted和gtk“Hello World”示例组合在一起时,所有内容都正确关闭。它必须是我的应用程序正在做的事情。直到我能够进一步弄明白,但是...
可能导致这种情况的原因是什么?像应用程序可以做什么导致gtk不退出?该应用程序在Gtk 2.12上运行良好,使用Python 2.5和Twisted 8.1,如果这有帮助的话。
答案 0 :(得分:1)
从this question起,它似乎来自导入win32ui
模块。但我认为潜在的问题更深层次。
编辑:我的特定安装Windows 7以及其他任何内容似乎都存在问题。
答案 1 :(得分:0)
线程,也许? Twisted反应器在关闭时加入所有线程,如果你在挂起的callInThread
中做某事,你的循环可能无法停止。 (我不确定如果你开始自己的线程会有什么行为。)