====== 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);
});
...