none
System.Timers.Timer RRS feed

  • Pregunta

  • Buenos días, comunidad.

    Tengo este problema utilizo esta función System.Timers.Timer, esta funcion la tengo en un servicio windows este es el codigo

    private int Intervalo = 1; //segundos
    private System.Timers.Timer myTimer;  

    protected override void OnStart(string[] args)
            {
                try
                {
                    DataTable dt =   StoredProcedures.GetEjecucion();
                    int milesegundos;
                    int tiempo_ejecucion;

                        milesegundos = Convert.ToInt32(dt.Rows[0][0].ToString());
                        tiempo_ejecucion = milesegundos * 3600000;

                        System.Threading.AutoResetEvent AutoReset = new System.Threading.AutoResetEvent(false);
                        //myTimer = new System.Threading.Timer(new System.Threading.TimerCallback(myTimer_Elapsed), AutoReset, Intervalo * 1000, Intervalo * 1000);
                        myTimer = new System.Timers.Timer();
                        myTimer.Interval = Intervalo * tiempo_ejecucion; // milisegundos

                        myTimer.Elapsed += myTimer_Elapsed;
                        myTimer.Start();
                        RegistrarEventosServicio("Servicio iniciado SIMAP");

                }
                catch (Exception ex)
                {
                    RegistrarEventosServicio(ex.Message);
                }
            }

    este a su vez manda a llamar a este:

     protected void myTimer_Elapsed(object sender, EventArgs e)
            {
                try
                {
                    DataTable dt = StoredProcedures.GetEjecucion();
                    DateTime ejecuta_monitoreo = Convert.ToDateTime(dt.Rows[0][1].ToString());
                    DateTime Hoy = DateTime.Now;

                    if (Hoy >= ejecuta_monitoreo)
                    {
                        EjecutarMonitoreo();
                        RegistrarEventosServicio("Se ejecuto el monitoreo");
                    }
                     //myTimer.Change(Intervalo * 1000, Intervalo * 1000);
                }
                catch (Exception ex)
                {
                    RegistrarEventosServicio(ex.Message);
                }
            }

    Cual es la pregunta:

    Quiero que la variable myTimer que esta declarada como System.Timers.Timer, se pueda iniciar a la hora que yo le diga no que cuando inicio el servicio windows es que empieza a contar y lo que quiero es que inicie cuando la fecha y hora sea igual a la fecha y hora que guardo en una tabla en la BD.

    Espero haberme explicado.

    Gracias. 

    jueves, 30 de abril de 2015 15:47

Todas las respuestas