Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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?

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
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

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 772
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