Quindi, qualcosa mi ha infastidito del nuovo supporto asincrono in C # 5:
L'utente preme un pulsante che avvia un'operazione asincrona. La chiamata ritorna immediatamente e il messaggio pompa ricomincia a funzionare - questo è il punto.
Quindi l'utente può premere di nuovo il pulsante, causando un nuovo rientro. Cosa succede se questo è un problema?
Nelle demo che ho visto, disattivano il pulsante prima della chiamata await
e lo abilitano nuovamente in seguito. Mi sembra una soluzione molto fragile in un'app reale.
Dovremmo codificare una sorta di macchina a stati che specifica quali controlli devono essere disabilitati per un dato insieme di operazioni in esecuzione? O c'è un modo migliore?
Sono tentato di mostrare una finestra di dialogo modale per la durata dell'operazione, ma mi sembra un po 'come usare un martello.
Qualcuno ha idee brillanti, per favore?
EDIT:
Penso che disabilitare i controlli che non dovrebbero essere usati mentre un'operazione è in esecuzione è fragile perché penso che diventerà rapidamente complesso quando si ha una finestra con molti controlli su di essa. Mi piace mantenere le cose semplici perché riduce la possibilità di bug, sia durante la codifica iniziale che la successiva manutenzione.
Che cosa succede se c'è una collezione di controlli che dovrebbero essere disabilitati per una particolare operazione? E cosa succede se più operazioni vengono eseguite contemporaneamente?