none
Timer en VisualStudio2013 c# RRS feed

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

    martes, 8 de abril de 2014 16:04

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
    sábado, 12 de abril de 2014 21:37

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

    martes, 8 de abril de 2014 16:20
  • 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
    sábado, 12 de abril de 2014 21:37
  •  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!

    domingo, 13 de abril de 2014 9:09