Oppure

Loading
04/08/10 12:50
systemgvp
Salve,

devo creare un'applicazione che mostra sul form (WPF) i cambiamenti di colore di
alcuni rettangoli.

Il problema e che all'avvio dell'evento mi mostra solo l'ultimo stadio perchè troppo
veloce. In Delphi usavo la procedura Application.ProcessMessage che mostrava i cambiamenti di stato ogni volta che me mi serviva, facendo quindi un refresh del form.

Come posso risolvere?

esiste poi in c# una funzione Sleep(xxx) o qualcosa di simile che blocca i processi per qualche istante?
aaa
05/08/10 8:19
Il Totem
System.Threadind.Thread.Sleep(x)
Blocca tutto il thread, quindi, nel thread principale, anche tutta l'applicazione.
aaa
05/08/10 13:22
systemgvp
e per il refresh?
aaa
06/08/10 8:00
Il Totem
Come?
aaa
06/08/10 11:34
systemgvp
per aggiornare i cambiamenti avvenuti sul form
aaa
06/08/10 11:52
Il Totem
Se proprio vuoi, Application.DoEvents...
aaa
06/08/10 19:16
systemgvp
non c'è in WPF, ma ho trovato la soluzione con

NomeDelForm.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, EmptyDelegate);
System.Threading.Thread.Sleep(500);
NomeDelForm.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, EmptyDelegate);

e definendo la variabile

private static Action EmptyDelegate = delegate() { };
aaa
07/08/10 8:12
Il Totem
Hai semplicemente detto di non eseguire nulla con priorità pari a quella del rendering. Quegli Invoke non dovrebbero modificare alcunchè. Almeno metti nel delegato qualcosa del tipo Update, Refres o Invalidate.
aaa