0

我正在使用wxpythonand做一个应用程序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()and wx.lib.pubusub.Subscribe,但我仍然遇到同样的问题。

4

1 回答 1

1

当与 wxPython 相关时,来自主线程以外的线程的任何内容都必须包装在线程安全方法中。其中有 3 个:wx.CallAfter、wx.CallLater 和 wx.PostEvent。如果您尝试直接从单独的线程访问 wxPython 方法,那么您几乎肯定会遇到问题。Pubsub 很棒,但它不是线程安全的。它也必须包含在其中一种线程安全方法中。

wxPython wiki有几个线程示例,我也写了一个关于这个主题的简单教程。如果这些都没有帮助,那么您需要创建一个小的、可运行的示例并将其发布在此处或 wxPython 邮件列表中。

于 2012-08-09T13:47:11.383 回答