Entonces, algo me ha estado molestando sobre el nuevo soporte asíncrono en C # 5:
El usuario presiona un botón que inicia una operación asíncrona. La llamada regresa inmediatamente y la bomba de mensajes comienza a funcionar nuevamente; ese es el punto.
Por lo tanto, el usuario puede presionar el botón nuevamente, lo que provoca un reencuentro. ¿Qué pasa si esto es un problema?
En las demostraciones que he visto, deshabilitan el botón antes de la await
llamada y lo habilitan nuevamente después. Esto me parece una solución muy frágil en una aplicación del mundo real.
¿Deberíamos codificar algún tipo de máquina de estado que especifique qué controles deben deshabilitarse para un conjunto dado de operaciones en ejecución? ¿O hay un mejor camino?
Estoy tentado de mostrar un diálogo modal durante la operación, pero esto se parece un poco a usar un mazo.
¿Alguien tiene alguna idea brillante, por favor?
EDITAR:
Creo que deshabilitar los controles que no deberían usarse mientras se ejecuta una operación es frágil porque creo que se volverá complejo rápidamente cuando tenga una ventana con muchos controles. Me gusta simplificar las cosas porque reduce la posibilidad de errores, tanto durante la codificación inicial como en el mantenimiento posterior.
¿Qué sucede si hay una colección de controles que deberían deshabilitarse para una operación en particular? ¿Y qué pasa si se ejecutan varias operaciones simultáneamente?