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 di QThread::run perche blocca l'event loop


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.