Я унаследовал приложение Winforms, которое выполняет много длительных вызовов на сервер приложений из потока пользовательского интерфейса, поэтому пользовательский интерфейс остается неотзывчивым, непригодным к использованию, не подлежащим закрытию в течение достаточно долгого времени. (Что заставляет меня действительно идти AAAAAAAAARGH! )
Я планирую переместить вызовы сервера в фоновый поток и отключить пользовательский интерфейс - но можно перемещать и закрывать - пока фоновый поток выполняет свою работу.
Итак, как лучше всего запретить ввод данных пользователем в мое приложение? Я размышляю в духе «диалога модального прогресса», но я бы предпочел решение, которое не заставляет меня бросать визуальные эффекты в лицо пользователю (некоторые серверные операции выполняются менее чем за 500 мс, поэтому диалог не оптимальный ...)
Есть ли какой-либо способ в Winforms, чтобы запретить пользователю запускать действия или изменять данные в приложении, пропуская несколько вариантов выбора (изменить размер, показать, скрыть и создать семью, а пользователь закрыть окно)? Я бы предпочел способ, при котором я не получал бы доступ к каждому элементу пользовательского интерфейса в моих формах и устанавливал его как отключенный ... их довольно много, и это приложение действительно "взломано" в конструкторе пользовательского интерфейса, пока оно не показывает кричащие вещи "стиль исходного кода. Нет способа рефакторинга КАЖДОГО вонючего до даты релиза ...
Да, кстати, это приложение живет в .net framework 2