Отже, щось переживає мене про нову підтримку async в C # 5:
Користувач натискає кнопку, яка запускає операцію асинхронізації. Виклик негайно повертається, і насос повідомлень знову починає працювати - ось у чому вся суть.
Тож користувач може знову натиснути кнопку - викликаючи повторне вступництво. Що робити, якщо це проблема?
У демонстраційних демонстраціях, які я бачив, вони вимикають кнопку перед await
викликом і знову включають її. Мені це здається дуже крихким рішенням у реальному додатку.
Чи повинні ми кодувати якусь машину стану, яка визначає, які елементи управління повинні бути відключені для заданого набору запущених операцій? Або є кращий спосіб?
Мені спокушається просто показати модальний діалог протягом тривалості операції, але це трохи схоже на використання кувалди.
У когось є якісь яскраві ідеї, будь ласка?
Редагувати:
Я думаю, що відключення елементів керування, які не слід використовувати під час виконання операції, є крихким, тому що я думаю, що це швидко стане складним, коли у вас буде вікно з багатьма елементами управління. Мені подобається робити прості речі, оскільки це зменшує ймовірність помилок, як під час первинного кодування, так і в подальшому технічному обслуговуванні.
Що робити, якщо існує колекція елементів керування, яку слід відключити для певної операції? А що робити, якщо кілька операцій виконуються одночасно?