1. 程式人生 > >Qt5執行緒錯誤:QThread: Destroyed while thread is still running

Qt5執行緒錯誤:QThread: Destroyed while thread is still running

背景:

        當前類,編寫接收子執行緒類訊號的槽函式和觸發子執行緒類執行的訊號;

        新建一個子執行緒類,編寫槽函式和訊號,MyClass *m_MyClass=new MyClass();

        新建一個執行緒物件QThread *runThread=new QThread();

        使用connect連線當前類與子執行緒的訊號槽,以便觸發執行緒及接收執行緒執行結果;

        使用m_MyClass.moveToThread(runThread),將子執行緒類移到執行緒中執行;

        runThread->start(),開啟執行緒。

**在當前執行緒的解構函式中,如果先刪除runThread再刪除m_MyClass,則會出現錯誤QThread: Destroyed while thread is still running

**正確的寫法應該是:

   runThread->exit(0);

   delete m_MyClass;

   delete runThread;