Multithreading problem

lunedì 20 ottobre 2008 - 09.56

From15 Profilo | Newbie

Mi sono appena iscritto e colgo l'occasione per salutare tutti gli sviluppatori.
Ora vi espongo il mio problema, ho una form con due bottoni start e stop i quali controllano l'animazione di un controllo creato da me. Tale controllo non è altro che un'animazione stile Vista (Il cerchio che si colora girando). Per l'avvio del controllo utilizzo un thread, in pratica con bottono start creao un thread, disegno e posiziono il mio controllo nella form e lo avvio (L'animazione e gestita con un Threeding.Timer). Ho aggiunto un bottone nella form il quale non fa altro che fare uno Sleep(4000) del threeed principale, cioè quello della form. La mi domanda è questa: perchè alla pressione del tasto l'animazione non continua ma aspetta anche lei che sono trascorsi 3 secondi, per ripartire? In pratica vorrei che l'animazione continuasse anche se svolgo operazioni "pesanti" su un'altro thread, che in questo caso è quello principale!!
Aspetto suggerimenti.
Saluti
Andrea

P.s. Mi sono dimenticato sviluppo in c#

aiedail92 Profilo | Expert

Ciao

L'applicazione si ferma perchè se il thread che gestisce la coda dei messaggi della finestra (e quindi il thread principale) è impegnato in altri lavori, la finestra non ha modo di ricevere i messaggi (aggiornamento, input di mouse e tastiera ecc). Quindi i lavori pesanti vanno sempre delegati a thread separati, altrimenti l'applicazione cessa di rispondere finchè non può ricominciare ad elaborare la coda.

Luca

From15 Profilo | Newbie

Quindi il fatto che due thread separati non si influenzano, non vale se uno di questi due è il thread della form sopprattutto quando si parla di grafica della form.
Mi sembra di aver capito, in pratica se io "fermo" il thread della form per 4 o 5 secondi se un'altro thread separato ha degli eventi di paint o update su un controllo che è sulla form (Controllo creato dal thread separato), esso viene eseguito ma in realtà viene messo in coda e servito quando il thred della form uscirà dallo sleep.
Grazie per l'informazione
Andrea

aiedail92 Profilo | Expert

Sì esatto, funziona proprio in quel modo.

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5