Control .NET para animar el UI al realizar operaciones asíncronas

Cada vez es más común realizar operaciones asíncronas, gracias en parte a la llegada de la Web, donde no podemos bloquear una aplicación simplemente porque esté haciendo una operación de red que no sabemos el tiempo que va a tardar en concluir, como una llamada a un servicio Web. Cuando realizamos una aplicación de este estilo, hay que ‘mantener al usuario entretenido’ de alguna forma, para que sepa que la operación está teniendo lugar y que la aplicación no se ha quedado ‘colgada’, idealmente dando la posibilidad de cancelar la tarea.


Una manera de indicar que se está realizando una operación de este estilo que me gustó hace tiempo fue la que implementa la ventana de inicio de sesión de SQL Server Management Studio, donde se ve una pequeña barra que muestra un gradiente de colores animado mientras se está validando al usuario.



Este UI es muy poco intrusivo y muestra claramente la intención. De hecho, en Outlook 2007 se ha copiado y se puede ver encima del panel de lectura de un mensaje cuando Outlook tarda en abrir el mensaje por cualquier motivo.


Siguiendo esta idea, cree un control hace tiempo para un proyecto, mostrando una barra animada mientras se está accediendo a un servicio Web. Os dejo aquí la implementación que realizé. Consiste en un control que expone tres propiedades ForeColor, MiddleColor y BackColor. El control crea un gradiente entre los tres colores en toda su superficie, quedando estéticamente bien cuando el tamaño del control es alargado y estrecho. Luego expone dos métodos, Animate y StopAnimation que lo animan. La animación realizada hace que el gradiente ‘rebote’ de lado a lado de la barra horizontal.


Adjunto al control un proyecto de prueba donde se puede ver enseguida lo que hace. No lo he portado aún a .NET Compact Framework, pero no creo que sea difícil si alguien lo quiere hacer.


Espero que resulte interesante.

Un comentario en “Control .NET para animar el UI al realizar operaciones asíncronas”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *