2012-08-08 79 views
0

我正在做一個應用程序與wxpythonpjsip,我需要使用多線程,因此每個調用是由它自己的線程處理,但由於某種原因,應用程序崩潰,意外立即關閉立即留下以下錯誤: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,但我仍然有同樣的問題。

回答

1

當與wxPython相關的主線程以外的任何線程必須被包裝在線程安全方法中。其中有3個:wx.CallAfter,wx.CallLater和wx.PostEvent。如果你試圖直接從一個單獨的線程訪問一個wxPython方法,那麼你肯定會遇到問題。 Pubsub很棒,但它不是線程安全的。它也必須用線程安全方法之一來包裝。

wxPython wiki有幾個線程的例子,我也寫了一個簡單的tutorial這個話題。如果這些沒有幫助,那麼您需要創建一個小的,可運行的示例,並將其發佈到此處或wxPython郵件列表中。