none
Como usar Tread Sleep en vb.net RRS feed

  • Pregunta

  • Buenas tardes a todos, recuro a vosotros solicitando de su valiosa ayuda con el siguiente inconveniente: estoy desarrollando una aplicación en donde el sistema tendrá tres tiempos, es decir si la hora esta entre las 05:00 a.m. y las 10:00 a.m. este sera el primer tiempo, si la hora esta entre las 10:00 a.m. y las 02:00 p.m.  este sera el segundo tiempo, si la hora esta entre las 02:00 p.m y las 09:00 p.m. este sera el tercer tiempo.

    Bueno hasta aquí todo me funciona correctamente, el sistema tiene una parte de configuración en donde el usuario pondrá una condición que consiste en que : cuantos minutos antes de cada corte desea que el sistema se bloquee

     

    Supongamos que el usuario pone 10 minutos, entonces el sistema tendrá que bloquearse 10 minutos antes de cada corte y permanecer bloqueado durante los minutos que el usuario a elegido que en este ejemplo son 10, cuando pasen los minutos el sistema tendrá que volver a la normalidad, yo lo he hecho con el siguiente código comparando la hora de corte con la hora del sistema y cuando se cumple la condición hago uso de la función de Tread Sleep(milisegundos) , pero no me funciona 

    Código: Función que bloquea el sistema:

     Public Function bloquearsistema()
    
            recuperardatosBloquearSistema()
    
            If lblsorteo.Text = "Primer sorteo" Then
                Me.hora2.Text = "09" & ":" & (60 - minutos_to_bloquear) & " a.m."
                If Me.hora2.Text = Me.lblHoraSistema.Text Then
                    Dim milisegundos As Integer = (minutos_to_bloquear) * 1000
                    Me.lblsorteo.Text = "Pausado..."
                    System.Threading.Thread.Sleep(milisegundos)
    
                End If
            End If
        End Function

    en un timer mando a llamar la función para que realice la comparación :

      Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            Me.lblHoraSistema.Text = DateTime.Now.ToString("hh:mm tt")
    
            obtenerSorteo()
    
            bloquearsistema()
    
        End Sub

    Algo mas que me gustaría agregar es que, un minuto antes de que se valla a bloquear el sistema se le muestre una advertencia al usuario para que le de tiempo de terminar las operaciones

    este es el formulario:

    Les agradecería su ayuda con esto.

    sábado, 4 de abril de 2020 20:32

Respuestas

Todas las respuestas

  • Hola Reynaldo Sanchez

    Y
    a hiciste debugging del programa para asegurarte de que entra el el if como se espera?

    Como utilizar threads en Visual Basic

    Prueba a hacer debug y espero esta documentacion te ayude en caso de que falte!

    Saludos

    Luis Diego Mora
    _______

    lunes, 6 de abril de 2020 14:32
    Moderador
  • Gracias estimado, en el enlace puede encontrar algo mas fácil de como hacerlo, les comparto el codigo:

     Public Sub pausa(ByVal tiempo_pausa)
            Dim tiempo_actual As Date
            Dim tiempo_arribo As Date
    
            tiempo_actual = Date.Now
            tiempo_arribo = tiempo_actual.AddMilliseconds(tiempo_pausa)
    
            Do While Date.Now < tiempo_arribo
                My.Forms.FormProbarPausa.Enabled = False
                Me.Label1.Text = "Sistema esta pausado"
                Application.DoEvents()
            Loop
            Me.Label1.Text = "Sistema listo para usarse"
            Console.Beep()
            My.Forms.FormProbarPausa.Enabled = True
    
        End Sub

    Llamada 

     Private Sub btn_1_Click(sender As Object, e As EventArgs) Handles btn_1.Click
            Console.Beep()
            pausa(60000)
        End Sub

    El tiempo deberá de agregarse en mili segundos....

    Gracias.

    lunes, 6 de abril de 2020 17:26