多くの実験と stackoverflow からの学習の後、QObject ワーカー、QThread を作成し、QObject ワーカーを QThread に移動し、QThread を開始しました。
void TelnetServer::incomingConnection(qintptr socketDescriptor)
{
QThread * TelnetConnectionThread = new QThread(this);
TelnetConnection *worker = new TelnetConnection(socketDescriptor,TelnetConnectionThread);
connect(TelnetConnectionThread, SIGNAL(started()), worker, SLOT(start()));
connect(TelnetConnectionThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
worker->moveToThread(TelnetConnectionThread);
TelnetConnectionThread->start(); // Start the thread running
}
TelnetConnectionThread->start() を呼び出すと、QThread 内でイベントループが開始されると想定しています (実行されているように見えるため)。今問題...どうすればスレッドを停止できますか? 私は試した:
QThread::quit();
アプリをシャットダウンしても、スレッドはまだ実行されています。これは実行ループが実行されていないということですか? このスレッドを停止するには、他に何かする必要がありますか? それとも、実際には停止されていますが、削除されていませんか?