2016-05-24 14 views
-1

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

Для этого я назначил переменную SEND_MSG для запуска события отправки электронной почты. Всякий раз, когда есть что-то с чтением, я устанавливаю SEND_MSG на 999, а другой поток, который петлиет и проверяет эту переменную, запускает процесс отправки электронной почты. Операция чтения/записи SEND_MSG выполняется внутри оператора блокировки.

Есть ли лучший способ сделать это?

спасибо.

ответ

0

Вы запрашиваете статус сохранения переменных из потока для связи состояния. Это не очень эффективный дизайн.

Существует несколько механизмов связи между потоками, которые обрабатывают эту ситуацию гораздо элегантнее.

За большой обзор механизмов см http://www.albahari.com/threading/

Если вы просто хотите сообщить о необходимости отправить по электронной почте, вы можете использовать например AutoResetEvent.

Другая возможность, которая позволяет легко передавать дополнительную информацию, такую ​​как номер датчика, тип неисправности и т. Д., Вы можете использовать BlockingCollection. Есть хороший пример того, как использовать его в нижней части этой ссылки.

Смежные вопросы