Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
#1

Обработка нескольких событий - C++

27.08.2013, 12:18. Просмотров 469. Ответов 5
Метки нет (Все метки)

На форму за короткое время приходит несколько (3-7) одинаковых событий, которые вызывают в свою очередь один и тот же метод. Каким образом можно обработать этот спам и вызвать нужный метод 1 (ну или на крайний случай 2) раза?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 12:18     Обработка нескольких событий
Посмотрите здесь:

Журнал событий? C++
C++ Курсовая.Напоминалка важных событий
Переопределение системных событий в C++ .NET C++
C++ Обработка событий (events) в Visual Studio
C++ Коды клавиш и обработка событий клавиатуры в консоли
Тетрис - Реализация таймера и обработка событий с клавиатуры C++
C++ Отлов событий CGridCtrl
Обработка нескольких строк C++
C++ Задача о философах с использованием событий
Как задать выполнение нескольких событий на нажатие одной кнопки C++
Обработка событий от мыши С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
luciys
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
27.08.2013, 12:28     Обработка нескольких событий #2
мб таймер, когда происходит событие запускаешь таймер запоминаешь событие, например, если 1 секунду оно не вызывалось или пошло другое, то вызываешь его, а таймер stop
0x10
2455 / 1627 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
27.08.2013, 12:35     Обработка нескольких событий #3
Таймер - да, но еще было бы неплохо разобраться что за события, почему они посылаются, мб ошибка чуть раньше.
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
27.08.2013, 13:07  [ТС]     Обработка нескольких событий #4
Цитата Сообщение от 0x10 Посмотреть сообщение
Таймер - да, но еще было бы неплохо разобраться что за события, почему они посылаются, мб ошибка чуть раньше.
При изменении состояния оборудования (например, при вытаскивании флешки), приходит несколько сообщений об изменении конфигурации: извлечение тома из двух веток, извлечение скрытых томов, изменение служебной информации и т.д. Мне нужно чтобы по этим сообщениям была обновлена структура дерева (метод renew() запушен), а он довольно тяжелый. Поэтому при его спаме программа фиснет секунд на 10 - это нехорошо.

Цитата Сообщение от luciys Посмотреть сообщение
мб таймер, когда происходит событие запускаешь таймер запоминаешь событие, например, если 1 секунду оно не вызывалось или пошло другое, то вызываешь его, а таймер stop
Идея была такая, пробовал реализовать - спам остался, видимо накосячил.
luciys
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
27.08.2013, 13:11     Обработка нескольких событий #5
dBuSh83, так смотри, запустил программу, произошло событие, запомнил, проигнорировал его, а потом его повторы тоже игноришь, потом уже при смене ты его вызываешь, а запоминаешь другое, таймер обнуляешь, а если просто время истекло, то вызываешь событие, обнуляешь где запоминал и останавливаешь таймер
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
29.08.2013, 12:57  [ТС]     Обработка нескольких событий #6
Цитата Сообщение от luciys Посмотреть сообщение
потом уже при смене ты его вызываешь, а запоминаешь другое
Тут опять же есть недостаток большой: события приходят не заподряд, те может быть такая очередь:С1СС23С4С, где С - нужное событие, 1-4 другие события. Те в данной ситуации 4 раза вызовется действие - не большой прирост производительности.

Проблему в некоторой мере решил так: при певрвом перехвате события включаю таймер на 1сек и увеличиваю счетчик, если по истечении времени счетчик изменился, то происходит нужный вызов и обнуление счетчика, а иначе снова вызывается таймер и снова проверка счетчика и тд. Максимум 3 вызова фунции происходит. Часто перекрывает всю очередь и вызывается всего 1 раз. Все-таки, получше чем было!
Yandex
Объявления
29.08.2013, 12:57     Обработка нескольких событий
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru