Hola habitantes de Matrix!
A veces necesitamos que nuestra aplicación haga una pausa para esperar a algún evento y la forma más fácil es hacer uso del método Thread.Sleep. El problema está en que al llamar a esta función, la interfaz de usuario queda bloqueada y no responde.
Hoy os traigo una subrutina que encontré por Internet que, aunque hace uso del método Thread.Sleep, no bloquea la interfaz de usuario, apenas consume recursos y cumple su función a la perfección. El código de la subrutina es el siguiente:
1 2 3 4 5 6 |
Private Sub Wait(ByVal seconds As Integer) For i As Integer = 0 To seconds * 100 System.Threading.Thread.Sleep(10) Application.DoEvents() Next End Sub |
Para realizar una llamada a esta subrutina lo haremos pasándole un íntegro como valor que representa a los segundos que va a durar la pausa, por ejemplo:
1 |
Wait(30) 'Pausa de 30 segundos |
Como este código no es mío, os dejo un enlace a StackOverflow con el post original. Si leéis las respuestas de los usuarios veréis que alguien ha publicado otra subrutina que hace lo mismo pero, tal y como comenta el autor, no es tan eficiente a nivel de consumo de recursos como la que os he presentado en este artículo.
Espero que os sirva de ayuda!
Si te ha gustado este tutorial no olvides puntuarlo y compartirlo en redes sociales. Gracias por visitar este blog y nos vemos en el próximo tutorial!.