Каков общий шаблон проектирования обработчиков событий в форме Windows - PullRequest
0 голосов
/ 11 января 2011

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

Ответы [ 3 ]

1 голос
/ 11 января 2011

В целом нет никаких ограничений на то, что вы делаете в обработчике событий Winforms.Но у него есть побочные эффекты, которые легко увидеть самим, если вы много работаете, пользовательский интерфейс становится кататоническим.Он больше не реагирует на щелчки мышью, он больше не перерисовывается.Примерно через 3 секунды Windows заменяет форму с призрачным окном на «Не отвечает» в строке заголовка.

Вам потребуется написать много кода, чтобы вызвать это условие, одна секунда больше 4 млрд машинные инструкции.Типичное зависание пользовательского интерфейса вызвано ожиданием выполнения чего-то другого, например, запроса к базе данных.

Это ужасно и не производит большого впечатления.И может сделать неудобным использование вашего пользовательского интерфейса.Ничего особенного в том, что пользователь нажимает кнопку, которая не отвечает.Для решения этой проблемы вы использовали бы рабочий поток, для этого создан BackGroundWorker.Это не так легко сделать правильно, используйте это, только если у вас есть реальная проблема, которую нужно решить.Ничего не принимай.

0 голосов
/ 11 января 2011

Наличие обработчиков событий с интенсивной логикой внутри - плохой паттерн?

Если вы задаете этот вопрос самостоятельно: Да. Могут быть некоторые исключения, но слишком много кода внутри UI-обработчиков событий часто является признаком плохого дизайна.

Вы должны взглянуть на MVP (MVP-Passive View и MVP-Supervising) и, возможно, даже MVVM и MVC. Это самые «известные» шаблоны проектирования, которые отделяют логику от презентации.
Лично я предпочитаю MVP-пассивный просмотр в WinForms, но есть много мнений по этому поводу.

0 голосов
/ 11 января 2011

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

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