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

Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 10:30
Giovedì, 26/04/2012
Salve,

premetto che sono nuovo nel mondo di C#, e credo di aver un problema piuttosto semplice.

In una Canvas mi faccio stampare una funzione matematica e per vedere come la costruisce uso:

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

solo che mentre aggiorna la grafica, non mi fa premere su nessun altro oggetto presente nel form. Come posso ovviare?


systemgvp.altervista.org
PM Quote
Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Segnala al moderatore
Postato alle 15:24
Giovedì, 26/04/2012
beh credo sia dovuto al fatto che il thread è già occupato dal refresh e quindi non puoi fare 2 cose contemporaneamente nello stesso thread! la soluzione: crea 2 thread in cui in uno lasci la gestione della form e nell'altro l'aggiornamento del canvas.

Ultima modifica effettuata da Lafa_96 il 26/04/2012 alle 15:26


Non hai bisogno di vedere l’intera scalinata. Inizia semplicemente a salire il primo gradino. (Martin Luther King)
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 17:38
Giovedì, 26/04/2012
Scusami ma in c# sono ancora troppo acerbo, potresti farmi perfavore un piccolo esempioP


systemgvp.altervista.org
PM Quote
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:12
Venerdì, 27/04/2012
Eccolo:
Codice sorgente - presumibilmente C#

  1. // all'inizio del file metti
  2. using System.Threading;
  3. Thread th = new Thread(AddresOf, disegna);
  4. // nel punto in cui vuoi far partire il disegno metti
  5. th.Start();
  6.  
  7.    
  8.     void disegna() {
  9.         // qui metti il codice che ti serve per disegnare la funzione e quando vuoi mettere in pausa usa
  10.         Thread.Sleep(1);
  11.         // al posto di 1 metti i millisecondi di pausa
  12.     }



PM Quote