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 - Timer in WPF
Forum - C# / VB.NET - Timer in WPF

Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 16:12
Martedì, 17/08/2010
Salve,

volendo cercare di capire come utilizzare i Timer in WPF ho scritto il seguente e semplice codice:

Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2. {
  3.     System.Timers.Timer aTimer = new System.Timers.Timer();
  4.     aTimer.Interval = 2000;
  5.     aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
  6.     aTimer.Start();
  7. }
  8.  
  9. void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  10. {
  11.     label1.Content = DateTime.Today.Second.ToString();
  12. }



il problema è che mi da un errore dicendomi che l'oggetto Label1 fa parte di un altro trhead, è mi sembra logico, ma come faccio a condividerlo?


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


Messaggi: 817
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 18:10
Martedì, 17/08/2010

Ma il label1 per caso sta in un altro Form ? se si FormPippo.label1............


Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

https://www.dropbox.com/s/c2aots5x4urgbhf/setup_game_sudoku ...
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:41
Martedì, 17/08/2010
Devi usare la classe DispatcherTimer: http://msdn.microsoft.com/it-it/library/system.windows.thr ...

Che automaticamente esegue il timer in una callback sul dispatcher thread.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 22:06
Martedì, 17/08/2010
infatti usando

Codice sorgente - presumibilmente C++

  1. DispatcherTimer timer1 = new DispatcherTimer();
  2. timer1 = new System.Windows.Threading.DispatcherTimer();
  3. timer1.Tick += new EventHandler(timer1_Tick);
  4. timer1.Interval = new TimeSpan(0, 0, 1);
  5. timer1.Start();
  6.  
  7. ........
  8.  
  9. private void timer1_Tick(object sender, EventArgs e)
  10. {
  11.     //codice da richiamare
  12. }



l'errore non me lo da, però credo che abbia un GROSSO inconveniente, ovvero che il tempo minimo da poter impostare è 1 SECONDO.

Come posso ovviare?


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


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 22:12
Martedì, 17/08/2010
Puoi impostare il tempo usando TimeSpan.FromMilliseconds: http://msdn.microsoft.com/en-us/library/system.timespan.fr ...



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 22:38
Martedì, 17/08/2010
ma lo devo inserire in

timer1.Interval = new TimeSpan(0, 0, 1);

? Se si non so come fare perchè prende solo variabili INT


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


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 22:39
Martedì, 17/08/2010
così:

timer1.Interval = TimeSpan.FromMilliseconds(2000);

Ultima modifica effettuata da netarrow il 17/08/2010 alle 22:40



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote