none
¿Cómo hacer una consulta de tiempo para que a las 23:59:00hrs se haga un movimiento automatico? RRS feed

  • Pregunta

  • Hola, lo que quiero lograr es ejecutar una acción todos los días a ciertas horas del día desconozco un poco acerca de con que hacerlo... y con que propiedades. sigo investigando para ver si encuentro algo similar.

    Digamos que a las 23:59:00hrs debo cerrar el programa. se me ocurre unicamente el if

    if (DTPReloj.Text == "23:59:00")
        {
            Application.Exit();
        }

    ¿En que función/propiedad debe ir exactamente para que independientemente de lo que este haciendo el programa lo ejecute?

    Manejo 1 Form "Principal" quien nunca se cierra, este se mantiene activo.

    miércoles, 17 de junio de 2020 15:41

Respuestas

  • Para hacerlo use el siguiente código:

    public static void Time()
        {
            // Crea un temporizador y establece un intervalo de medio segundo.
            aTimer = new System.Timers.Timer();
            aTimer.Interval = 500;
    
            // Conecte el evento transcurrido para el temporizador.
            aTimer.Elapsed += OnTimedEvent;
    
            // Haga que el temporizador active eventos repetidos (verdadero es el valor predeterminado)
            aTimer.AutoReset = true;
    
            // Iniciar el temporizador
            aTimer.Enabled = true;                        
        }
    
    private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
        {                        
            MessageBox.Show(e.SignalTime.ToShortTimeString() + Environment.NewLine + e.SignalTime.ToLongTimeString());                        
        }

    Solo agregue en el Load de la aplicación el "Time();"


    • Marcado como respuesta TORO BLANCO miércoles, 17 de junio de 2020 16:56
    • Editado TORO BLANCO miércoles, 17 de junio de 2020 16:57
    miércoles, 17 de junio de 2020 16:56

Todas las respuestas

  • Para hacerlo use el siguiente código:

    public static void Time()
        {
            // Crea un temporizador y establece un intervalo de medio segundo.
            aTimer = new System.Timers.Timer();
            aTimer.Interval = 500;
    
            // Conecte el evento transcurrido para el temporizador.
            aTimer.Elapsed += OnTimedEvent;
    
            // Haga que el temporizador active eventos repetidos (verdadero es el valor predeterminado)
            aTimer.AutoReset = true;
    
            // Iniciar el temporizador
            aTimer.Enabled = true;                        
        }
    
    private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
        {                        
            MessageBox.Show(e.SignalTime.ToShortTimeString() + Environment.NewLine + e.SignalTime.ToLongTimeString());                        
        }

    Solo agregue en el Load de la aplicación el "Time();"


    • Marcado como respuesta TORO BLANCO miércoles, 17 de junio de 2020 16:56
    • Editado TORO BLANCO miércoles, 17 de junio de 2020 16:57
    miércoles, 17 de junio de 2020 16:56
  • Hola Toro Blanco,

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Eric Ruiz


    miércoles, 17 de junio de 2020 17:04
    Moderador
  • hola

    No uses un timer usas Quartz .Net

    Introducción a Quartz .Net

    con esta puede indicar un Cron para que se ejecute cuando lo necesitas, asi no tienes que detectar ninguna hora solo le configuras

    Entonces en el Job que definas cierras la aplicacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 17 de junio de 2020 20:34
  • Hola Leandro Tuttini, al intentar añadirlo mediante NuGet este me marca un error por la versión de framework que uso (.net 4 client profile)... por lo que dice en las especificaciones en .net framework es a partir del 4.5.2 en adelante...

    Si estoy mal corrijame por favor, yo trato de estar en esa versión por el tema de compatibilidad con sistemas viejos (win 7, win 8 de 32bit), no he investigado acerca de pero hasta ahora no he encontrado inconvenientes respecto al tema de compatibilidad en ese framework tanto de win7 a 32/64bit hasta win10 32/64bit.

    ¿Es recomendable subir la versión?

    jueves, 18 de junio de 2020 4:36
  • Por eso no me gusta usas librerías de terceros.

    El programa que estés usando, por deffectoe l frameowrk en mi caso con el Visual Studio Community 2019, usa el 4.7.2 y el 4.8.

    Si el NuGet es del 4.x, selecciona en tu proyecto el 4.0, ya funciona.


    http://electronica-pic.blogspot.com

    jueves, 18 de junio de 2020 8:12
  • >>me marca un error por la versión de framework que uso (.net 4 client profile)

    porque sigues usando el framework de client profile, eso es re antiguo, podrias cambiarlo al menos a algo mas estable como es el .net 4.5

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 18 de junio de 2020 20:08
  • Leandro Tuttini, no había investigado acerca del tema de los .net framework... hasta el momento no me ha dado ningún error o falla de compatibilidad con los equipos que he manejado, pero en efecto debo buscar siempre la estabilidad del sistema. Mi único problema es que mayormente los equipos donde suelo implementarlo son equipos por debajo de windows 10... he marcado limite en windows 7 por eso preguntaba la compatibilidad del framework.

    He cambiado a la versión 4.5.2 (sabiendo que si es compatible con windows 7), pero aun no he probado el Quartz .Net estoy tratando otra practica, en cuanto termine probare la librería.

    Gracias.


    • Editado TORO BLANCO sábado, 20 de junio de 2020 1:49
    sábado, 20 de junio de 2020 1:48
  • Hola Metaconta, estaba usando  .net framework 4.0 client profile pero en efecto... lo que dice Leandro Tuttini es cierto... hay que buscar estabilidad en un sistema... para mi caso aplica, pero aun no he hecho pruebas con la librería que me comento. agradezco tu respuesta.

    sábado, 20 de junio de 2020 1:51