====== I thread con wxwidgets ====== 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 [[http://it.wikipedia.org/wiki/Thread_(informatica)|thread]]thread, detti anche "processi leggeri" che eseguono le nostre funzioni in "background" senza interferire con l'aggiornamento della nostra finestra. ===== Esempio di thread con wxwidget ===== 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 ===== 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(); ===== Aggiornare l'interfaccia grafica dal nostro thread ===== Possiamo usare la seguente funzione: ... wxTheApp->CallAfter( [=] { myGauge->SetValue(p); }); ...