none
Manejo de la hora del sistema RRS feed

  • Pregunta

  • Hola, me encuentro con un problema que no sé como resolver, necesito que en mi aplicación se llame a una función segun un intervalo de tiempo  de 5 minutos,  con la peculiaridad de que la función debe ejecutarse exactamente cada vez que la hora sea XX:X5:00 ó XX:X0:00. Muchas gracias por vuestra ayuda.
    martes, 29 de mayo de 2012 21:11

Respuestas

  • "Marvelshine" preguntó:

    > necesito que en mi aplicación se llame a una función
    > segun un intervalo de tiempo  de 5 minutos,  con la
    > peculiaridad de que la función debe ejecutarse
    > exactamente cada vez que la hora sea XX:X5:00 ó XX:X0:00.

    Es decir, que se ejecute la función a los 5 minutos, 10 minutos, 15 minutos, y así hasta los 55 minutos y 0 minutos, cada 5 minutos.

    Si es así, lo único que tienes que averiguar es si los minutos actuales de la hora son divisibles entre 5 y que los segundos sean 0, y esto lo harías en el evento Tick de un control Timer configurado de la siguiente manera.

    En el evento Load del formulario declararías y configurarías el control Timer:

    Private Sub Form1_Load (sender As Object, e As EventArgs) _
    Handles MyBase.Load

    Dim tmr As New System.Windows.Forms.Timer() tmr.Interval = 1000 ' 1 segundo AddHandler tmr.Tick, AddressOf TimerOnTick tmr.Start()

    End Sub

    Y en el controlador del evento Tick del control Timer ejecutarías:

    Private Sub TimerOnTick(sender As Object, e As EventArgs) ' Fecha y hora actual. ' Dim horaActual As DateTime = DateTime.Now ' Minutos correspondientes a la hora actual ' Dim minutos As Integer = horaActual.Minute ' Segundos correspondientes a la hora actual ' Dim segundos As Integer = horaActual.Second

    ' ¿Son divisibles los minutos entre 5? ' Dim esDivisible As Boolean = (minutos Mod 5 = 0) If ((esDivisible) And (segundos = 0)) Then ' Han transcurrido 5 minutos. ' EjecutarFunción() End If End Sub


    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.





    miércoles, 30 de mayo de 2012 7:03
    Moderador

Todas las respuestas

  • Hola, el problema con el que me encuentro es que no se me ocurre la manera de hacer una función que según un lapso de tiempo introducido por el usuario me desencadene una función, me explico, el usuario en la configuración de la aplicación selecciona 1, 5, 10, 15, 30 o 60 minutos, al arrancar el programa se lee ese valor y lo que debería hacer es que sin importar la hora a la que se arranque el programa ejecute la función, pero aqui viene el problema, por ejemplo, si el lapso especificado son 5 minutos y el programa arranca a las 15:03:45 debe ejecutar la función a las 15:05:00 y a partir de ahí cada 5 minutos exactos y así con cada uno de los diferentes lapsos que se pueden especificar.

    Le he dado bastantes vueltas al control Timer, pero no encuentro la manera, agradezco vuestra ayuda.

    martes, 15 de mayo de 2012 21:08
  • hola

    no has evaluadio usar un control Timer

    a este podrias ponerle un Interval con el timepo que selecciono el usuario

    este es un control que esta en la toolbox del VS

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 15 de mayo de 2012 21:15
  • Sí, si que lo he hecho, por eso mismo lo menciono en la pregunta. No encuentro la manera de hacer que el interval del timer cambie en tiempo de ejecución ya que no encuentro la forma de calcularlo con datediff's ni nada por el estilo, un saludo.
    • Editado Marvelshine miércoles, 16 de mayo de 2012 20:45
    martes, 15 de mayo de 2012 21:24
  • Puedes hacerlo con un timer, haciendo tu propio cronómetro y hacer que se llame a la función que quieres.

    Estudiante de Sistemas Informáticos.

    martes, 29 de mayo de 2012 21:27
  • El problema no es el timer sino la manera de comprobar periodicamente que se cumpla que los minutos de la hora actual sean 5 o 0 y ejecutar la función.
    martes, 29 de mayo de 2012 21:39
  • "Marvelshine" preguntó:

    > necesito que en mi aplicación se llame a una función
    > segun un intervalo de tiempo  de 5 minutos,  con la
    > peculiaridad de que la función debe ejecutarse
    > exactamente cada vez que la hora sea XX:X5:00 ó XX:X0:00.

    Es decir, que se ejecute la función a los 5 minutos, 10 minutos, 15 minutos, y así hasta los 55 minutos y 0 minutos, cada 5 minutos.

    Si es así, lo único que tienes que averiguar es si los minutos actuales de la hora son divisibles entre 5 y que los segundos sean 0, y esto lo harías en el evento Tick de un control Timer configurado de la siguiente manera.

    En el evento Load del formulario declararías y configurarías el control Timer:

    Private Sub Form1_Load (sender As Object, e As EventArgs) _
    Handles MyBase.Load

    Dim tmr As New System.Windows.Forms.Timer() tmr.Interval = 1000 ' 1 segundo AddHandler tmr.Tick, AddressOf TimerOnTick tmr.Start()

    End Sub

    Y en el controlador del evento Tick del control Timer ejecutarías:

    Private Sub TimerOnTick(sender As Object, e As EventArgs) ' Fecha y hora actual. ' Dim horaActual As DateTime = DateTime.Now ' Minutos correspondientes a la hora actual ' Dim minutos As Integer = horaActual.Minute ' Segundos correspondientes a la hora actual ' Dim segundos As Integer = horaActual.Second

    ' ¿Son divisibles los minutos entre 5? ' Dim esDivisible As Boolean = (minutos Mod 5 = 0) If ((esDivisible) And (segundos = 0)) Then ' Han transcurrido 5 minutos. ' EjecutarFunción() End If End Sub


    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.





    miércoles, 30 de mayo de 2012 7:03
    Moderador