Приложение Winforms прекращает рисование, но остается реагирующим на события - PullRequest
2 голосов
/ 27 октября 2011

У нас есть клиентское приложение C # .NET 3.5 UI, которое работает в среде с несколькими мониторами (обычно 4 экрана) в Windows 7. Время от времени после запуска нескольких из этих приложений экран перестает перерисовываться.

Элементы управления продолжают реагировать на нажатия или нажатие клавиш, и значения можно обновлять программным способом, но вся форма не перерисовывается для отражения каких-либо изменений.Например, кнопки, которые включены / отключены в зависимости от состояния, могут оставаться неактивными, но реагировать на нажатия или наоборот.Кнопки не анимируются при нажатии.

Обходной путь: сворачивание и восстановление окна, по-видимому, устраняет проблему.После этого приложение начинает правильно рисовать.

Необходимым разочаровывающим аспектом этой проблемы является то, что программно все работает нормально.Никаких исключений в наших журналах не обнаружено.В журналах системных событий ничего не было видно.Мы еще не нашли способ обнаружить, что это состояние происходит.

Другие разные аспекты: протоколирование использует log4net, уровень взаимодействия с сервером использует ZMQ

Обновление: Вызов формы Invalidate () и Update () не решает проблему.При перетаскивании окна между экранами на каждом экране отображаются разные значения.Свернуть / восстановить все еще решает проблему.

Ответы [ 2 ]

0 голосов
0 голосов
/ 10 ноября 2011

Я ни в чем не могу быть уверен, не увидев приложение и код, но, скорее всего, кто-то вызывает .SuspendLayout() перед сложным обновлением, а исключение (вероятно, проглоченное) не позволяет коду достичь соответствующего .ResumeLayout(). Чтобы проверить это, попробуйте добавить кнопку, которая вызывает .ResumeLayout() для формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...