2017-12-14 10 views
0

の.hスレッドを停止する方法は何ですか(私がQThreadから直接継承するとき)?

#include <QThread> 
#include <QDebug> 

class MainWindow : public QThread 
{ 
    Q_OBJECT 

protected: 
    void run() 
    { 
     while (1) 
     { 
      qDebug() << "\nsdfdsf"; 
     } 
    } 

public: 
    MainWindow(QThread *parent = 0); 
    ~MainWindow(); 
}; 

#include "mainwindow.h" 

MainWindow::MainWindow(QThread *parent) 
    : QThread(parent) 
{ 
    start(); 
} 

MainWindow::~MainWindow() 
{ 

} 

た.cppは今、これは私が知っているスレッドでの作業の古い方法です。 メソッドで作業するときにスレッドを停止する方法は何ですか?

例を示してください。

答えて

0

Qt5には、スレッドで処理できるinterrupt request (QThread::requestInterruption)があります。そのため、スレッドを停止させるためのエレガントで統一された方法があります。

this answerも参照してください。

+0

これを呼び出す方法は何ですか? 'QThread :: requestInterruption' –

+0

はい、その後に' QThread :: wait() 'が続き、スレッドループで' QThread :: isInterruptionRequested() 'をチェックしてください。 – stefaanv

0

最も簡単な方法は、while(someCondition)と置き換えることです。ここで、は、ブール変数、呼び出し関数、またはスレッドがまだ実行中であるかどうかを判断するのに適切なその他のチェックを表します。

関連する問題