none
Como iniciar Stopwatch desde una secuencia diferente a 0 RRS feed

  • Question

  • Hola.

    He estado buscando en internet pero, no encuentro la manera de iniciar el StopWatch sin que tenga que empezar siempre desde 00:00:00:00.

    Se que al pararlo con StpWtch.Stop se pausa, y cuando lo vuelves a iniciar con (StpWtch.Start) sigue la cuenta. Pero, si hubiese alguna forma de iniciarlo, por ejemplo, desde 31:23:59:00 (días, horas, minutos ,segundos) les agradecería su ayuda.

    Guardo el tiempo transcurrido en terminar un programa, pudiendo cerrarlo antes para seguir en otro momento.

    De antemano, gracias.

    Friday, July 10, 2020 11:45 AM

All replies

  • Hola Rafael F.M,

    Lo que preguntas se puede hacer de esta manera:


    var offsetTimeSpan = new System.TimeSpan(0,46079,0).Add(ss.Elapsed)

    46079 es 31:23:59:00 a minutos. Espero sea lo que buscabas.

    Saludos cordiales

     

    Gabriel Castro

     ____________________________ 

    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.  



    Friday, July 10, 2020 12:28 PM
    Moderator
  • <!-- Lo que preguntas se puede hacer de esta manera:

    var offsetTimeSpan = new System.TimeSpan(0,46079,0).Add(ss.Elapsed)

    46079 es 31:23:59:00 a minutos. Espero sea lo que buscabas. -->

    Gracias Gabriel Castro R

    Pero ese método es demasiado complicado para mi.

    Si lo he entendido bien, tengo que calcular (dd\:hh\:mm\:ss) , a minutos y escribirlo en una variable o textbox?

    label1.text = new TimeSpan(0,CInt(TextBox1.Text),0).Add(sw.Elapsed).tostring

    Además, veo que también se escriben los milisegundo. No los necesito. Si tuvieses algo mas sencillo! Estoy aprendiendo por mi cuenta y no es fácil sin un profesor.

    Gracias de nuevo por la ayuda.



    • Edited by Rafael F.M Friday, July 10, 2020 10:55 PM
    Friday, July 10, 2020 10:54 PM
  •         LblTimer.Text = "31:23:59:00"
            Dim dd, hh, mm, ss As Integer
    
            dd = CInt(Mid(LblTimer.Text, 1, 2))
            hh = CInt(Mid(LblTimer.Text, 4, 2))
            mm = CInt(Mid(LblTimer.Text, 7, 2))
            ss = CInt(Mid(LblTimer.Text, 10, 2))
    
            Dim offsetTimeSpan = New TimeSpan(dd, hh, mm, 0).Add(stwt1.Elapsed)
            LblTimer.Text = offsetTimeSpan.ToString()
            'ss se cuenta como milisegundos. Por eso, los segundos empiezan de 0 siempre.

    Creo que es así. Me falta arreglar los segundos y que no salgan los milisegundos, sin tenerlos que ocultar con la propiedad autoSize = Off del Label 


    • Edited by Rafael F.M Saturday, July 11, 2020 9:52 AM
    Saturday, July 11, 2020 9:42 AM
  • Hola Rafael F.M

     

    ¿Alguna novedad sobre la consulta realizada? En cuanto a lo que me dices, acá te dejo esta información para calcular la cantidad total de minutos de manera sencilla. Si no necesitas los milisegundos, simplemente ponlos en 0.

    Si ya lograste resolverlo por favor no te olvides de marcar las respuestas que te sirvieron para que otras personas puedan saber como resolver este problema.

    Saludos cordiales

     

    Saludos cordiales

     

    Gabriel Castro

     ____________________________ 

    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.  

    Tuesday, July 14, 2020 7:49 PM
    Moderator
  • He acabado yéndome por la tangente porque no puedo con StopWatch. No se como controlarlo a mi gusto.

    Lo siguiente es lo que tengo. Lo entiendo algo mejor.

    #Region "CRONOMETRO"
        Public vartimer As String
        Dim dia, hora, minuto, segundo As Integer
        Dim dd, hh, mm, ss As String
        WithEvents Crono As New Timer
        Private Sub CronoTick() Handles Crono.Tick
    
            dia = CInt(dd)
            hora = CInt(hh)
            minuto = CInt(mm)
            segundo = CInt(ss)
    
            segundo += 1
            If segundo = 60 Then
                segundo = 0
                minuto += 1
                If minuto = 60 Then
                    minuto = 0
                    hora += 1
                    If hora = 24 Then
                        hora = 0
                        dia += 1
                    End If
                End If
            End If
    
            dd = String.Format("{0:00}", dia)
            hh = String.Format("{0:00}", hora)
            mm = String.Format("{0:00}", minuto)
            ss = String.Format("{0:00}", segundo)
    
            vartimer = dd & ":" & hh & ":" & mm & ":" & ss
    
            LblTimer.Text = vartimer
        End Sub
    
        Private Sub TimerStart() 'handles buttonstart.click
            Crono.Interval = 1000
    
            Dim rgx As New Regex("^[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2}$")
            If rgx.IsMatch(vartimer) Then
                dd = Mid(vartimer, 1, 2)
                hh = Mid(vartimer, 4, 2)
                mm = Mid(vartimer, 7, 2)
                ss = Mid(vartimer, 10, 2)
                Crono.Start()
            Else
                ResetTimer()
            End If
        End Sub
        Private Sub ResetTimer() 'handles buttonreset.tick
            dia = CInt("0") : hora = CInt("0") : minuto = CInt("0") : segundo = CInt("0")
            LblTimer.Text = "00:00:00:00"
            vartimer = "00:00:00:00"
            dd = "0" : hh = "0" : mm = "0" : ss = "0"
    
        End Sub
    
    #End Region
     

    Gracias, Gabriel Castro R,  otra vez por tu interés en ayudarme.

    Sunday, July 19, 2020 9:53 AM
  • Hola Rafael F.M,

    ¿Alguna novedad sobre la consulta realizada? Si tu último post es la respuesta, por favor márcalo como respuesta para que otras personas puedan saber como solucionar este problema. Ha sido un placer ayudarte!

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    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.  

    Thursday, July 30, 2020 11:20 PM
    Moderator
  • Hola Rafael F.M,

    ¿Alguna novedad sobre la consulta realizada? Si tu último post es la respuesta, por favor márcalo como respuesta para que otras personas puedan saber como solucionar este problema. Ha sido un placer ayudarte!

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    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.  


    No es una respuesta. Es una solución temporal. Dejo abierto este hilo sin marcar una respuesta efectiva, porque solucionar mi problema con StopWatch es mas interesante. Conocer si StopWatch puede iniciarse desde una variable, 'ej: dim varsw = "01:23:58:59"; dias, horas, minutos, segundos', sería simple y mas presentable que con mi solución temporal, con variables y un Control Timer.

    Gracias otra vez.

    Sunday, August 2, 2020 10:40 AM