調用 quit() 會退齣所有相關事件並釋放資源,最後離開 QThread 綫程。
由於 quit() 不是立即終止 QThread 綫程,所以工作是異步的,且更安全、更可控。
當 QThread 綫程實例 self.threadObject 先調用 quit() 離開槽, 再使用 self.threadObject.deleteLater() 稍後刪除公共槽、del self.threadObject 形式語句、或 delattr(self, "threadObject") 內置函數,刪除綫程實例。
若之後仍有此 QThread 綫程實例 self.threadObject 的相關操作 (包括自動垃圾迴收),在後颱就可能輸齣以下警告提示 (甚至導緻應用程序崩潰):
QThread: Destroyed while thread is still running
相比 terminate() 立即終止 QThread 綫程,雖然存在以上現象,但 quit() 異步、安全離開綫程更可控。
另請參閱:
版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。