2010-11-29 113 views
1

使用Python 2.6,Twisted 10.1和GTK + 2.22,安装了最新的pygtk,我在关闭时遇到问题。当我关闭应用程序并关闭反应堆(当然使用gtk2reactor)时,应用程序会冻结。Twisted + Gtk - 关闭不正常

我绕过了扭曲的源代码并添加了调试消息。结果发生的是,'shutdown'事件触发,PortableGtkReactor.crash被调用,其中调用gtk.main_quit。该事件在ReactorBase.runUntilCurrent的末尾处理。当函数返回时,控制权转至ReactorBase.iterate,该控制权将控制返回至PortableGtkReactor.simulate,该控制权返回至... gtk.main()调用。它看起来像gtk只是不退出。

不幸的是,当我把一个非常简单的例子与扭曲的gtk和“Hello World”样本放在一起时,所有事情都可以正确关闭。这一定是我的应用程序正在做的事情。直到我可以进一步了解它,但...

什么可能导致这种情况?像一个应用程序可以做什么,导致GTK不退出?该应用程序在Gtk 2.12上运行良好,Python 2.5和Twisted 8.1如果有帮助的话。

回答

1

this question它似乎来自于导入win32ui模块。但我认为潜在的问题是更深入..

编辑:似乎是我的特定安装的Windows 7和其他任何在这里的问题。

0

线程,也许? Twisted reactor会在关闭时加入所有线程,如果您在挂起的callInThread中执行某些操作,则循环可能无法停止。 (我不确定如果你开始自己的线程会有什么样的行为。)