Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Refresh Form
Forum - C# / VB.NET - Refresh Form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 14:50
Mercoledì, 04/08/2010
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?


systemgvp.altervista.org
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:19
Giovedì, 05/08/2010
System.Threadind.Thread.Sleep(x)
Blocca tutto il thread, quindi, nel thread principale, anche tutta l'applicazione.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 15:22
Giovedì, 05/08/2010
e per il refresh?


systemgvp.altervista.org
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:00
Venerdì, 06/08/2010
Come?


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 13:34
Venerdì, 06/08/2010
per aggiornare i cambiamenti avvenuti sul form


systemgvp.altervista.org
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:52
Venerdì, 06/08/2010
Se proprio vuoi, Application.DoEvents...


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 21:16
Venerdì, 06/08/2010
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() { };


systemgvp.altervista.org
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:12
Sabato, 07/08/2010
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.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 13:51
Sabato, 07/08/2010
forse non capisco perchèè da poco che mi sono affacciato sul c#.

comunque a me serve solo qualcosa che mi aggiorni i cambiamenti avvenuti sul form


systemgvp.altervista.org
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo