Strumenti Utente

Strumenti Sito


Barra laterale

programmazione:wxwidgets:thread

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

programmazione/wxwidgets/thread.txt · Ultima modifica: 15/12/2023 - 11:43 da Fabio Di Matteo