martes, 6 de marzo de 2018

Receta C# No. 7-19: Actualizar la Interfaz de Usuario en una Aplicación Multithread

1. Problema

Actualizar la interfaz gráfica de una aplicación tipo Windows Form cuando está compuesta por múltiples threads.

2. Solución

En su defecto Windows Forms no cuenta con manejo seguro de threads; esto quiere decir que la interacción con un control de la interfaz de usuario no puede ser manipulada por cualquier thread. Luego es neceario que el programador se asegure que la interacción con un control se lleve a cabo con el thread que lo creó.


En caso contrario, el programador debe invocar el control usando los métodos Invoke o BeginInvoke: estos métodos reciben como argumento un delegado que ejecutará el código personalizado.

3. Código C#


Líneas relevantes:
  • Líneas 27-29: Handler del evento de tiempo transcurrido para el temporizador temporizadorVerde: aquí se usa el método Invoke del control Button para cambiar su color de fondo.
  • Líneas 32-35:
    Handler del evento de tiempo transcurrido para el temporizador
    temporizadorRojo. Ídem a su homólogo.
Prueba de ejecución:
Actualización interfaz gráfica
Figura 1. Actualización interfaz gráfica.

4. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.

O

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.