クリーンアップ作業を容易にするために、ワーカー オブジェクトの親を移動先の 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); // Move worker into QThread
TelnetConnectionThread->start();
}
start() 行の直前に、次のように追加しました。
worker->setParent(TelnetConnectionThread);
しかし、実行時に、新しい親が別のスレッドにあるため、それを行うことができないというエラーが表示されます。それはどうしてですか?上記の行では、ワーカーを新しいスレッドに移動しました...そのため、ワーカーは TelnetConnectionThread と同じスレッドにある必要があります。ヘルプ?
ワーカーが実際に新しいスレッドに移動することを、いくつかの qDebug と thread() で確認しました!