Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
1 / 1 / 1
Регистрация: 20.03.2013
Сообщений: 77

Обработчик события не реагирует на событие?

21.05.2014, 22:05. Показов 5478. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс для работы с Sql-соединением. В нем есть обработчик события изменения состояния соединения, который использует делегат на метод главной формы, метод должен изменять текст на кнопке "соединиться".

Кода довольно много, с вашего позволения залью на pastebin. Если таки необходимо вставлять код прямо сюда, то сделаю. http://pastebin.com/ddzCxYK5

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

Проблема в том, что задуманная схема отлично работает, когда соединение открывается или закрывается, однако когда статус соединения меняется на ConnectionState.Connecting мне не удалось никоим образом добиться срабатывания обработчика, видно, что поток управления даже не заходит туда, т.к. не отображается MessageBox'ы если их туда поместить.

Что я делаю не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2014, 22:05
Ответы с готовыми решениями:

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

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

Как вызвать один обработчик события в другом обработчике события?
Здравствуйте. Подскажите пожалуйста, каким образом можно вызвать информацию из одного обработчика события в другой обработчик события? ...

22
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
22.05.2014, 00:05
Лучший ответ Сообщение было отмечено landgen как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от landgen Посмотреть сообщение
у меня 13 студия и ничего не происходит
Значит во всем виноваты мелкомягкие. 100500.
1
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
22.05.2014, 00:09
Цитата Сообщение от landgen Посмотреть сообщение
Как вам моя идея в случае разрыва соединения событием через ссылку на метод сразу лишать пользователя возможности пользовать контролы, которые предназначены для работы с БД? (код, который эти контролы вызывают, по-умолчанию считают, что соединение есть и оно живо).
я думаю - лучше делать проверку конекта перед использованием, и если чтото с ним не так - выводить сообщение...
0
1 / 1 / 1
Регистрация: 20.03.2013
Сообщений: 77
22.05.2014, 00:14  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Значит во всем виноваты мелкомягкие. 100500.
Пометил как лучший ответ

Cкажите ещё, раз уж зашел. Как вы видели из кода, соединение открывается через тру-кетч, если открыть соединение не получилось, то исключение выводится на экран.
Почему после неудачной попытки соединения я ещё некоторое время не могу попытаться открыть его заново? При вызове этого же блока тру-кетч моментально опять бросается исключение. На момент вызова connection.Open статус подключение находится в Closed, соответственно, непонятно, что ему не нравится?

Добавлено через 3 минуты
Цитата Сообщение от hepper Посмотреть сообщение
я думаю - лучше делать проверку конекта перед использованием, и если чтото с ним не так - выводить сообщение...
Увы, идея была изначально такая, но при реализации длинных проверок типа "а вот если соединения нет, то попытаться соединиться, а если соединиться не получилось, то - так, если получилось - то эдак" я начал плавать в коде и в конце концов мне пришлось вернуться к бэкапу, т.к. всё изгадил.
А здесь мне очень нравится, очень объектно-ориентированно и надёжно получилось: в главной форме есть метод, который через делегат вызывает обработчик события смены состояния, и если что не так, то все сразу отключается, пользователю на экран тут же выводятся необходимые сообщения итд. Вроде даже ООП не нарушил, по крайней мере, ничего плохого в том, чтобы работать с элементами другой формы через делегат нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2014, 00:14

Почему когда я вешаю обработчик события на ячейку и этот обработчик срабатывает, то оказывается, он сработал совершенно для ДРУГОЙ ячейки?
Да, почему? Скропаем DataGridView; кинем на форму listBox2 и listBox1 и напишем такой обработчик для события EditingControlShowing...

Меню программы - 1 обработчик реагирует на все клавиши
Решил замутить в Паскаль игру. Работаю с меню, но на удивление, не срабатывает обработчик клавиш uses crt; var i,sl,ot,o:...

Панель не реагирует на события.
Кидаю на форму пустую панель. Пытаюсь сделать обработчик клика - не работает. Засел по "F4" в процедуре TForm1.Panel1Click -...

Form1 не реагирует на события
событие OnLoad почему-то внезапно перестало работать, даже обычный месседжбокс не выводит. Причем раньше работало нормально. Помогите...

Программа не реагирует на событие comboBox
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedText == "1")...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru