Отказ от событий C# ⇐ C#
-
Anonymous
Отказ от событий C#
Я прослушиваю сообщение об аппаратном событии, но мне нужно отключить его, чтобы избежать слишком большого количества запросов.
Это аппаратное событие, которое отправляет статус машины, и мне приходится хранить его в базе данных для статистических целей, и иногда случается, что его статус меняется очень часто (мерцает?). В этом случае я хотел бы сохранить только «стабильный» статус и хочу реализовать его, просто подождав 1-2 секунды перед сохранением статуса в базе данных.
Это мой код:
частный MachineClass Connect() { пытаться { MachineClass RPC = новый MachineClass(); rpc.RxVARxH += eventRxVARxH; возврат РПК; } улов (исключение e1) { log.Error(e1.Message); вернуть ноль; } } частное недействительное событиеRxVARxH (машина MachineClass) { log.Debug("Событие запущено"); } Я называю это поведение «устранением дребезга»: подождите несколько раз, чтобы действительно выполнить свою работу: если то же самое событие будет запущено снова во время устранения дребезга, мне придется отклонить первый запрос и начать ждать времени устранения дребезга, чтобы завершить второе событие.
Как лучше всего этим управлять? Просто таймер на один выстрел?
Чтобы объяснить функцию «debounce», ознакомьтесь с этой реализацией javascript для ключевых событий: http://benalman.com/code/projects/jquer ... /debounce/
Я прослушиваю сообщение об аппаратном событии, но мне нужно отключить его, чтобы избежать слишком большого количества запросов.
Это аппаратное событие, которое отправляет статус машины, и мне приходится хранить его в базе данных для статистических целей, и иногда случается, что его статус меняется очень часто (мерцает?). В этом случае я хотел бы сохранить только «стабильный» статус и хочу реализовать его, просто подождав 1-2 секунды перед сохранением статуса в базе данных.
Это мой код:
частный MachineClass Connect() { пытаться { MachineClass RPC = новый MachineClass(); rpc.RxVARxH += eventRxVARxH; возврат РПК; } улов (исключение e1) { log.Error(e1.Message); вернуть ноль; } } частное недействительное событиеRxVARxH (машина MachineClass) { log.Debug("Событие запущено"); } Я называю это поведение «устранением дребезга»: подождите несколько раз, чтобы действительно выполнить свою работу: если то же самое событие будет запущено снова во время устранения дребезга, мне придется отклонить первый запрос и начать ждать времени устранения дребезга, чтобы завершить второе событие.
Как лучше всего этим управлять? Просто таймер на один выстрел?
Чтобы объяснить функцию «debounce», ознакомьтесь с этой реализацией javascript для ключевых событий: http://benalman.com/code/projects/jquer ... /debounce/
Мобильная версия