2016-06-30 2 views
0

...이 올바른 방법은 스레드를 종료 m_ReviewImageThreadLoader이 스레드 ... 개체입니다스레드를 올바르게 종료하는 방법은 무엇입니까? 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; 
} 

입니다.

답변

0

질문에 대한 답변은 스레드에서 수행되는 작업의 성격에 따라 크게 다릅니다. 사용이 ... 같은 경우 (당신이 정말로 terminate()에 전화를 필요가 없습니다 있지만)

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

다음 코드를 잘해야한다.

m_ReviewImageThreadLoaderQThread에서 파생 된 유형이고 명시 적으로 QThread::run을 재정의 한 경우 질문에 답변하기 전에 추가 정보를 제공해야합니다.

코드를 사용해 보셨습니까? 작동하는 것으로 보입니까?

+0

안녕하세요, GM은, 고마워, 난 내 개체를 만들었습니다 : m_ReviewImageThreadLoader = new ReviewImageThreadLoader(); m_ReviewImageThreadLoader는 Qthread와 m_ReviewImageThreadLoader에 의해 상속 된 자체 클래스입니다. 그 클래스에 대한 새로운 클래스를 생성 할 필요가 없습니다. 그런 스레드를 사용하면, 이제 삭제 스레드를 원합니다. 스레드 삭제 프로세스를 요청하고 있습니다. 이 경우이 코드는 잘 작동합니다 –

+0

if (m_ReviewImageThreadLoader! = NULL) { m_ReviewImageThreadLoader-> quit(); m_ReviewImageThreadLoader-> terminate(); 삭제 m_ReviewImageThreadLoader; m_ReviewImageThreadLoader = NULL; qDebug() << "m_ReviewImageThreadLoader closed"<< endl; } –

관련 문제