Autore: Fabio Di Matteo
Ultima revisione: 14/12/2023 - 09:50
Nella programmazione di software dotati di gui si usano spesso i thread in quanto certe funzioni lanciate dalle nostre callbacks potrebbero impiegare troppo tempo a terminare con la spiacevole conseguenza che l'aggiornamento delle nostre finestre si congela rendendo inutilizzabile la gui per troppo tempo. Per questo motivo si usano i threadthread, detti anche “processi leggeri” che eseguono le nostre funzioni in “background” senza interferire con l'aggiornamento della nostra finestra.
Per implementare i thread si deve derivare la classe wxthread ed inserire le nostre istruzioni sul metodo ::Entry() come mostrato di seguito:
class MyThread : public wxThread { public: MyThread(); private: virtual void *Entry(); }; MyThread::MyThread() { } void *MyThread::Entry() { printf("Thread eseguito correttamente.\n"); }
Quindi tutto quello che sta sul metodo Entry()
verra' eseguito dentro un thread.
Usare il thread e' semplice, basta instanziare un oggetto del nostro tipo di classe in questo modo:
//Instanziamo l'oggetto con il nostro tipo thread = new MyThread(); //Creiamo l'oggetto thread; thread->Create(); //Lanciamo il thread con le istruzioni contenute nel suo metodo Entry() thread->Run();
Possiamo usare la seguente funzione:
... wxTheApp->CallAfter( [=] { myGauge->SetValue(p); }); ...
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.