Principales respuestas
Timer en VisualStudio2013 c#

Pregunta
-
Estoy tratando de migrar una aplicacion que tengo en VS 2010, con Windows form, a VS 2013 Express, donde ya no hay formularios.
Necesito declarar un Timer, para luego trabajar con timer.Interval y timer.Tick, pero despues de mucho buscar no he encontrado ninguna clase que me convenga. Si me pudierais aconsejar alguna alternativa me sería de gran ayuda.
Desde ya, muchas gracias.
Respuestas
-
Hola North King,
Supongo que usas VS 2013 Express for Windows, pues hay una versión (for Windows Desktop) que si tiene Windows Forms, la versión que tienes es para aplicaciones de la tienda Windows (Windows 8 y siguientes).
En ese caso, tienes unos cuantos tipos de Timer. Uno que respeta el hilo de representación en pantalla, el DispatcherTimer:
DispatcherTimer t = new DispatcherTimer(); t.Tick += (e, o) => { //haz algo; }; t.Interval = TimeSpan.FromMilliseconds(500); t.Start();
Y otro que no sincroniza con el hilo de pantalla y te dará una excepción si actualizas algo que sea visible:
System.Threading.Timer t2 = new System.Threading.Timer((o) => { //haz algo aquí, pero que no modifique nada en pantalla o //llame al dispatcher para sincronizar System.Diagnostics.Debug.WriteLine("t2"); }, null, 0, 500);
Hay otras maneras de realizar tareas asíncronas con la clase Task, mírate la documentación para ver qué clase es la que más te conviene.
Saludos,
Juanma
Juan Manuel Servera
twitter: @jmservera
mi blog: http://jmservera.com
MVP Visual C#
MCPD WP7 Developer - MCTS Sharepoint 2010 Application Development- Marcado como respuesta North King lunes, 14 de abril de 2014 15:14
Todas las respuestas
-
Hola, tienes un Timer en System.Timers que te puede servir.
using System.Timers; private void TestTimer() { Timer timer = new Timer(); timer.Interval = 1000; timer.Elapsed += timer_Elapsed; } //Se produce cuando transcurre el intervalo void timer_Elapsed(object sender, ElapsedEventArgs e) { }
Un saludo.
Víctor del Valle - http://www.vrdelvalle.net
-
Hola North King,
Supongo que usas VS 2013 Express for Windows, pues hay una versión (for Windows Desktop) que si tiene Windows Forms, la versión que tienes es para aplicaciones de la tienda Windows (Windows 8 y siguientes).
En ese caso, tienes unos cuantos tipos de Timer. Uno que respeta el hilo de representación en pantalla, el DispatcherTimer:
DispatcherTimer t = new DispatcherTimer(); t.Tick += (e, o) => { //haz algo; }; t.Interval = TimeSpan.FromMilliseconds(500); t.Start();
Y otro que no sincroniza con el hilo de pantalla y te dará una excepción si actualizas algo que sea visible:
System.Threading.Timer t2 = new System.Threading.Timer((o) => { //haz algo aquí, pero que no modifique nada en pantalla o //llame al dispatcher para sincronizar System.Diagnostics.Debug.WriteLine("t2"); }, null, 0, 500);
Hay otras maneras de realizar tareas asíncronas con la clase Task, mírate la documentación para ver qué clase es la que más te conviene.
Saludos,
Juanma
Juan Manuel Servera
twitter: @jmservera
mi blog: http://jmservera.com
MVP Visual C#
MCPD WP7 Developer - MCTS Sharepoint 2010 Application Development- Marcado como respuesta North King lunes, 14 de abril de 2014 15:14
-
Muchas gracias Juanma y Victor por contestar. El DispatcherTimer es justo lo que necesito. El System.Timers me imagino que sea para la version Desktop, pero prefiero adaptarme a la version Express.
Leeré el resto de la documentacion, me habeis ayudado mucho, gracias!