Domanda

Quindi, qualcosa mi ha infastidito sul nuovo supporto Async in C# 5:

L'utente preme un pulsante che avvia un'operazione asincrima. La chiamata ritorna immediatamente e la pompa del messaggio inizia di nuovo in esecuzione - questo è il punto.

Quindi l'utente può premere nuovamente il pulsante, causando rientranza. E se questo fosse un problema?

Nelle demo che ho visto, disabilitano il pulsante prima del await Chiama e abilitalo di nuovo in seguito. Questo mi sembra una soluzione molto fragile in un'app del mondo reale.

Dovremmo codificare una sorta di macchina a stato che specifica quali controlli devono essere disabilitati per un determinato set di operazioni di esecuzione? O c'è un modo migliore?

Sono tentato di mostrare solo un dialogo modale per la durata dell'operazione, ma sembra un po 'come usare una mazza.

Qualcuno ha idee brillanti, per favore?


MODIFICARE:

Penso che disabilitare i controlli che non dovrebbero essere usati mentre un'operazione è in esecuzione sia fragile perché penso che diventerà rapidamente complesso quando si dispone di una finestra con molti controlli su di esso. Mi piace mantenere le cose semplici perché riduce la possibilità di bug, sia durante la codifica iniziale che la successiva manutenzione.

Cosa succede se esiste una raccolta di controlli che dovrebbero essere disabilitati per una particolare operazione? E se sono in esecuzione più operazioni contemporaneamente?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top