Więc coś mnie denerwuje w związku z nową obsługą asynchronizacji w C # 5:
Użytkownik naciska przycisk, który rozpoczyna operację asynchroniczną. Połączenie natychmiast wraca, a pompa komunikatów zaczyna działać ponownie - o to właśnie chodzi.
Aby użytkownik mógł ponownie nacisnąć przycisk - powodując ponowne wejście. Co jeśli jest to problem?
W pokazach, które widziałem, wyłączają przycisk przed await
połączeniem i włączają go ponownie później. Wydaje mi się, że jest to bardzo delikatne rozwiązanie w rzeczywistej aplikacji.
Czy powinniśmy kodować jakiś automat stanów, który określa, które kontrolki muszą być wyłączone dla danego zestawu uruchomionych operacji? Czy jest jakiś lepszy sposób?
Kusi mnie, aby po prostu pokazać modalne okno dialogowe na czas trwania operacji, ale to trochę przypomina używanie młota.
Czy ktoś ma jakieś jasne pomysły?
EDYTOWAĆ:
Myślę, że wyłączenie kontrolek, których nie należy używać podczas wykonywania operacji, jest delikatne, ponieważ myślę, że szybko się skomplikuje, gdy pojawi się okno z wieloma kontrolkami. Lubię uprościć sprawę, ponieważ zmniejsza ryzyko błędów, zarówno podczas początkowego kodowania, jak i późniejszej konserwacji.
Co się stanie, jeśli istnieje zbiór elementów sterujących, które należy wyłączyć dla określonej operacji? A jeśli wiele operacji działa jednocześnie?