sábado, 1 de junio de 2013

Esperar x Segundos en .NET

Luego de que un colega de elhacker.net (Gustavo Hahn) necesitara un code para realizar un proyecto de envío de teclas teniendo que esperar un intervalo de tiempo entre cada envío.

La función toma el valor "0.00:00:" de tiempo y procesa como string (& reemplaza) los segundos recibidos para iniciar la transformación;

    Public Sub EsperaSec(ByVal SegundosW As Double)
        Dim Ts As TimeSpan
        Dim TrSt As String
        Dim tR1 As DateTime
        Dim tR2 As DateTime
        TrSt = "0.00:00:" & SegundosW.ToString.Replace(",", ".")
        Ts = TimeSpan.Parse(TrSt) 'String transformado
        tR1 = DateTime.Now.Add(Ts) 'Añadimos, es el tiempo donde finalizará el conteo por ej. 10 segundos despues del tiempo actual
        tR2 = DateTime.Now 'Tiempo actual para comparar
        Do While tR2 < tR1 'mientras el tiempo actual sea menor o bien mientras no se hayan cumplido los segundos establecidos
            Application.DoEvents() 'igual que el DoEvents de VB 6
            tR2 = DateTime.Now 'asignar nuevos datos al segundo tiempo
        Loop
    End Sub


Se le "llama" de esta forma

EsperaSec(2)

Donde Segundos puede ser un valor en concreto o una variable de tipo numérica.
Es posible establecer la función en un módulo o bien en cualquier formulario si se quiere puede variar el acceso por ejemplo colocandola como Privada.

 NOTA: si se quiere utilizar la función en un Timer, hay que ser cuidadoso ya que mientras se esperan los segundos el timer puede entrar en acción y haría un alboroto en nuestra aplicación, si la función se realiza en un evento común y corriente NO tendrán ningún problema.

Saludos.

No hay comentarios:

Publicar un comentario