2012-10-08 108 views
-1

嗨,大家好,我有一點麻煩。 我完成了我的程序,它檢查bitbucket上是否存在新版本。 除了當我關閉我的應用程序和線程仍在運行時,一切都很好,程序可以在任務管理器中看到。 EVT_CLOSE的 代碼如下:wxpython關閉線程的應用程序

def on_close(self, event): 
    if self._thread is not None and self._thread.isAlive(): 
     self._thread.interrupt.set() 
    self.Destroy() 
    event.Skip() 

線程在運行像守護進程。

怎麼了?

編輯: 我understund和我試圖做線程上的join()方法。 但我不工作。

def on_close(self, event): 
if self._thread is not None and self._thread.isAlive(): 
    self._thread.join() 
    self._thread.interrupt.set() 
self.Destroy() 
event.Skip() 

和:

 def on_close(self, event): 
if self._thread is not None and self._thread.isAlive(): 
    self._thread.join(10) 
    self._thread.interrupt.set() 
self.Destroy() 
event.Skip() 

回答

0

在您關閉事件處理程序,你需要把它結束線程或等待線程結束。通常你使用線程的join()方法來做到這一點。如果線程正在打開另一個進程並且該進程需要很長時間,那麼您可能想要嘗試殺死正在運行的進程以便線程可以返回。

+0

我更新了我的答案;) – marcio