1

多くの実験と 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();

アプリをシャットダウンしても、スレッドはまだ実行されています。これは実行ループが実行されていないということですか? このスレッドを停止するには、他に何かする必要がありますか? それとも、実際には停止されていますが、削除されていませんか?

4

1 に答える 1