none
Se puede inicializar un timer? RRS feed

  • Pregunta

  • La pregunta es si se puede inicializar un timer o si se le puede poner un tiempo de inicio determinado, ojo no es que inicie a una hora determinada sino que yo quiero ponerle en una variable que no inicie de cero sino que inicie por ejemplo a los diez minutos de tal forma que hice un cronometro y si necesito sincronizar mi tiempo con el de otro cronometro le pueda asignar el tiempo de inicio del otro cronometro. Por ejemplo me atrasé y no tomé el tiempo entonces inicializo el timer para que cuando el cronometro oficial tenga diez minutos exactos yo presiono el boton de iniciar cronometro y activo mi cronometro y los dos llevamos el mismo tiempo.

    Frank Cruz


    martes, 6 de febrero de 2018 21:48

Respuestas

  • Creo que algo no queda claro en la pregunta. Los Timers no tienen tiempo de inicio, sino que solo tienen intervalo de disparo. Desde luego, el intervalo de disparo se puede cambiar, por ejemplo, puedes ponerle un intervalo al principio y cuando se dispare por primera vez, cambiarselo para que en los sucesivos disparos sea un intervalo distinto. La forma de hacerlo depende del tipo de Timer (hay al menos cuatro distintos: System.Timers.Timer, System.Threading.Timer, System.Windows.Forms.Timer, System.Web.Extensions.Timer,...). Pero por la forma en que hablas de "un cronometro" en tu pregunta, creo que tienes "algo mas" que un Timer, por ejemplo, una variable que cuenta el tiempo transcurrido y que actualizas usando un Timer que se dispara (por ejemplo) cada segundo. En ese caso, lo que tendrias que hacer es ajustar el valor inicial de esa variable, no el del Timer. Tal vez si pusieras un poco de codigo de ejemplo de lo que estas haciendo quedaria mas claro lo que intentas conseguir.
    miércoles, 7 de febrero de 2018 9:25
  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente código

    Public Class Form1
        Private mStopWatch As New Stopwatch
        Private mTimeSpan As New TimeSpan
        Private mTicks As Double = 0
        Private mbCrono2 As Boolean = False
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.TimerCrono.Interval = 50
            Me.btnParar1.Enabled = False
            Me.btnParar2.Enabled = False
        End Sub
        Private Sub TimerCrono_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerCrono.Tick
            If mStopWatch.IsRunning Then
                mTimeSpan = mStopWatch.Elapsed
                Me.txtCrono1.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", mTimeSpan.Hours, mTimeSpan.Minutes, mTimeSpan.Seconds, mTimeSpan.Milliseconds / 10)
                If mbCrono2 = True Then
                    Me.txtCrono2.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", mTimeSpan.Hours, mTimeSpan.Minutes, mTimeSpan.Seconds, mTimeSpan.Milliseconds / 10)
                End If
            End If
        End Sub
        Private Sub btnIniciar1_Click(sender As Object, e As EventArgs) Handles btnIniciar1.Click
            Me.btnIniciar1.Enabled = False
            Me.btnParar1.Enabled = True
            mTicks = 0
            mStopWatch.Start()
        End Sub
        Private Sub btnParar1_Click(sender As Object, e As EventArgs) Handles btnParar1.Click
            Me.btnIniciar1.Enabled = True
            Me.btnParar1.Enabled = False
            mStopWatch.Stop()
        End Sub
        Private Sub btnIniciar2_Click(sender As Object, e As EventArgs) Handles btnIniciar2.Click
            Me.btnIniciar2.Enabled = False
            Me.btnParar2.Enabled = True
            mbCrono2 = True
            Me.txtCrono2.Text = Me.txtCrono1.Text
        End Sub

        Private Sub btnParar2_Click(sender As Object, e As EventArgs) Handles btnParar2.Click
            Me.btnIniciar2.Enabled = True
            Me.btnParar2.Enabled = False
            mbCrono2 = False
        End Sub
    End Class

    P.D.

    Tienes que añadir un timer llamado TimerCrono

    Un saludo desde Bilbo
    Carlos

    miércoles, 7 de febrero de 2018 9:30

Todas las respuestas

  • Creo que algo no queda claro en la pregunta. Los Timers no tienen tiempo de inicio, sino que solo tienen intervalo de disparo. Desde luego, el intervalo de disparo se puede cambiar, por ejemplo, puedes ponerle un intervalo al principio y cuando se dispare por primera vez, cambiarselo para que en los sucesivos disparos sea un intervalo distinto. La forma de hacerlo depende del tipo de Timer (hay al menos cuatro distintos: System.Timers.Timer, System.Threading.Timer, System.Windows.Forms.Timer, System.Web.Extensions.Timer,...). Pero por la forma en que hablas de "un cronometro" en tu pregunta, creo que tienes "algo mas" que un Timer, por ejemplo, una variable que cuenta el tiempo transcurrido y que actualizas usando un Timer que se dispara (por ejemplo) cada segundo. En ese caso, lo que tendrias que hacer es ajustar el valor inicial de esa variable, no el del Timer. Tal vez si pusieras un poco de codigo de ejemplo de lo que estas haciendo quedaria mas claro lo que intentas conseguir.
    miércoles, 7 de febrero de 2018 9:25
  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente código

    Public Class Form1
        Private mStopWatch As New Stopwatch
        Private mTimeSpan As New TimeSpan
        Private mTicks As Double = 0
        Private mbCrono2 As Boolean = False
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.TimerCrono.Interval = 50
            Me.btnParar1.Enabled = False
            Me.btnParar2.Enabled = False
        End Sub
        Private Sub TimerCrono_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerCrono.Tick
            If mStopWatch.IsRunning Then
                mTimeSpan = mStopWatch.Elapsed
                Me.txtCrono1.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", mTimeSpan.Hours, mTimeSpan.Minutes, mTimeSpan.Seconds, mTimeSpan.Milliseconds / 10)
                If mbCrono2 = True Then
                    Me.txtCrono2.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", mTimeSpan.Hours, mTimeSpan.Minutes, mTimeSpan.Seconds, mTimeSpan.Milliseconds / 10)
                End If
            End If
        End Sub
        Private Sub btnIniciar1_Click(sender As Object, e As EventArgs) Handles btnIniciar1.Click
            Me.btnIniciar1.Enabled = False
            Me.btnParar1.Enabled = True
            mTicks = 0
            mStopWatch.Start()
        End Sub
        Private Sub btnParar1_Click(sender As Object, e As EventArgs) Handles btnParar1.Click
            Me.btnIniciar1.Enabled = True
            Me.btnParar1.Enabled = False
            mStopWatch.Stop()
        End Sub
        Private Sub btnIniciar2_Click(sender As Object, e As EventArgs) Handles btnIniciar2.Click
            Me.btnIniciar2.Enabled = False
            Me.btnParar2.Enabled = True
            mbCrono2 = True
            Me.txtCrono2.Text = Me.txtCrono1.Text
        End Sub

        Private Sub btnParar2_Click(sender As Object, e As EventArgs) Handles btnParar2.Click
            Me.btnIniciar2.Enabled = True
            Me.btnParar2.Enabled = False
            mbCrono2 = False
        End Sub
    End Class

    P.D.

    Tienes que añadir un timer llamado TimerCrono

    Un saludo desde Bilbo
    Carlos

    miércoles, 7 de febrero de 2018 9:30
  • Gracias por sus respuestas, apenas tenga tiempo me pongo a analizarlas y ver como me va.

    Frank Cruz

    miércoles, 7 de febrero de 2018 16:28