簡體   English   中英

如何正確終止Qt中的QThread?

[英]How to properly terminate QThread in Qt?

這是終止線程的正確方法嗎?

 if(m_ReviewImageThreadLoader !=NULL)
 {
   m_ReviewImageThreadLoader->quit();
   m_ReviewImageThreadLoader->wait();
   m_ReviewImageThreadLoader->terminate();
   delete m_ReviewImageThreadLoader;
   m_ReviewImageThreadLoader = NULL;
   qDebug()<<"m_ReviewImageThreadLoader closed"<<endl;
 }

...其中m_ReviewImageThreadLoader是線程對象。

您問題的答案在很大程度上取決於正在線程上完成的工作的性質。 如果用法像...

QThread *m_ReviewImageThreadLoader = new QThread;
MyObject *mo = new MyObject;
mo->moveToThread(m_ReviewImageThreadLoader);
m_ReviewImageThreadLoader->start();

那么您的代碼就可以了(盡管您確實不需要調用terminate() )。

另一方面,如果m_ReviewImageThreadLoader是從QThread派生的類型,並且已顯式重寫QThread::run那么您需要提供更多信息,然后才能回答問題。

您是否嘗試過代碼? 它看起來有效嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM