ich habe immer noch Probleme mit meinen QThreads. Ich definiere das ganze jetzt folgendermassen:
Code: Alles auswählen
QThread* thread = new QThread(this);
ConnectionTest* ct = new ConnectionTest();
ct->moveToThread(thread);
connect(thread, SIGNAL(started()) , ct , SLOT(startWork()));
connect(ct , SIGNAL(ended()) , ct , SLOT(deleteLater()));
connect(ct , SIGNAL(destroyed()) , thread, SLOT(quit()));
connect(thread, SIGNAL(finished()) , thread, SLOT(deleteLater()));
connect(thread, SIGNAL(terminated()) , thread, SLOT(deleteLater()));
thread->start();
Der Slot "startWork()" in ConnectionThread startet nun die Verarbeitung und wirft an deren Ende das "ended()" Signal aus. Das Aufräumen in dieser Klasse funktioniert auch und die Verbindung zum Server wird sauber abgebaut. Das "Ended()"-Signal soll dann die Ganzen oben verketten Aufräumarbeiten auslösen. Das scheint auch im Großen und Ganzen ganz gut zu funktionieren. Allerdings bekomme ich sporadisch die Meldung:
Und ich verstehe jetzt nicht warum. Ich rufe das deleteLater doch erst auf wenn der Thread fertig ist!?QThread: Destroyed while thread is still running
Grüße,
Willi