Я работаю над приложением WinForms и в нем есть пользовательский элемент управления. Кнопки в пользовательском элементе управления вызывают события до формы, которая будет обрабатываться другим кодом. Одна из кнопок запускает некоторые процессы, которые могут вызвать проблемы, если они запускаются одновременно. У меня есть логика в коде для управления состоянием, поэтому обычно пользователь не может запустить процесс, если он уже запущен. Однако, если пользователь дважды щелкнет кнопку, он запустит процесс дважды так быстро, что мне будет сложно его предотвратить.
Мне интересно, как лучше с этим справиться?
Я начал с отключения кнопки в событии щелчка, но второй щелчок происходит до того, как первый щелчок вызывает отключение кнопки. Установка других флагов в коде тоже не уловила.
Я подумываю добавить какую-нибудь синхронизирующую блокировку в код, который вызывает событие, но мне интересно, есть ли у кого-нибудь из вас идея получше.
Поскольку этот проект в основном завершен, я ищу ответы, которые не требуют радикальной переписывания приложения (например, реализации составного блока приложения), однако вы можете свободно публиковать эти идеи, поскольку я могу использовать их мои следующие проекты.