Avvio ed esecuzione di secondo thread in contemporanea
-
Buongiorno.
E' domenica, ma io non ho pace. Consultando gli esempi trovati sul web sono riuscito a gestire un modulo in thread.
Ho la main, la PrimaClasse derivata da QWidget e una SecondaClasse derivata da QThread.
Ho dovuto mettere il caricamento della SecondaClasse nel main, altrimenti si distruggeva ancor prima di partire (non so perché, ma per ora poco importa) mentre il relativo start l'ho messo in un pulsante START della PrimaClasse ed ho dovuto dichiarare la SecondaClasse statica.
Dato che l'esecuzione del thread SecondaClasse mi sembrava troppo veloce, alla fine ho aggiunto un msleep di mezzo secondo ed ha continuato a funzionare, ma ancora troppo velocemente. Allora ho modificato lo msleep in 2 secondi e, cosa strana, la SecondaClasse si chiude prima che l'esecuzione sia completata, segnalandomi l'errore QThread: Destroyed while thread is still running.
Ho pensato di disabilitare l'autodistruzione della SecondaClasse inserendo all'inizio del run() l'istruzione this->setTerminationEnabled(false); ma non sortisce nessun effetto: se l'attesa è maggiore di 1 secondo la SecondaClasse si autodistrugge.
Perché ? E come posso risolvere il problema ?
bvox -
Ci sono molte cose confuse qui. Rimanderei a https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/ per un chiaro esempio di come usare
QThread
correttamante.Come nota secondaria
sleep
e' quasi sempre una cattiva idea che diventa pessima se chiamato all'interno diQThread::run
perche blocca l'event loop