我正在使用wxpython
和pjsip
进行应用,我需要使用多线程,因此每个调用都由它自己的线程处理,但由于某种原因,应用程序崩溃并意外关闭立即离开以下错误:
Gdk-ERROR **: The program 'python' received an X Window System error.
这可能反映了该计划中的一个错误。
错误为RenderBadPicture (invalid Picture parameter)
。
python: xcb_io.c:221: poll_for_event: Assertion `(((long) (event_sequence) - (long) (dpy->request)) <= 0)' failed.
我读到多线程和wxpython
会发生这种情况。我尝试使用wx.callafter()
和wx.lib.pubusub.Subscribe
,但我仍然遇到同样的问题。
答案 0 :(得分:1)
与wxPython相关的主线程以外的线程中的任何内容都必须包含在threadsafe方法中。其中有3个:wx.CallAfter,wx.CallLater和wx.PostEvent。如果您尝试直接从单独的线程访问wxPython方法,那么您几乎肯定会遇到问题。 Pubsub很棒,但它不是线程安全的。它也必须包含在一个线程安全方法中。
wxPython wiki有几个线程示例,我也在这个主题上写了一个简单的tutorial。如果这些没有帮助,那么你需要创建一个小的,可运行的例子并在此处或在wxPython邮件列表上发布。