Отказ от событий C#C#

Место общения программистов C#
Anonymous
Отказ от событий C#

Сообщение Anonymous »


Я прослушиваю сообщение об аппаратном событии, но мне нужно отключить его, чтобы избежать слишком большого количества запросов.

Это аппаратное событие, которое отправляет статус машины, и мне приходится хранить его в базе данных для статистических целей, и иногда случается, что его статус меняется очень часто (мерцает?). В этом случае я хотел бы сохранить только «стабильный» статус и хочу реализовать его, просто подождав 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/

Вернуться в «C#»