2016-05-24 1 views
-1

Mon programme recueille des données provenant de divers capteurs et chaque fois qu'il y a un problème avec la lecture du capteur, je dois envoyer un courriel pour alerter l'utilisateur.Déclencheur d'événement - Meilleures pratiques

Pour cela, j'ai affecté une variable SEND_MSG pour déclencher l'événement d'envoi de courrier électronique. Chaque fois qu'il y a quelque chose avec la lecture, je mets SEND_MSG à 999 et un autre thread, qui boucle et vérifie cette variable déclenche le processus d'envoi d'email. L'opération de lecture/écriture de SEND_MSG se produit dans une instruction lock.

Y a-t-il une meilleure façon de procéder?

Merci.

Répondre

0

Vous interrogez un statut de maintien de variable d'un thread à un état de communication. Ce n'est pas un design très efficace.

Il existe un certain nombre de mécanismes de communication inter-thread qui traitent cette situation de manière beaucoup plus élégante.

Pour un aperçu des mécanismes voir http://www.albahari.com/threading/

Si vous voulez simplement communiquer la nécessité d'envoyer un e-mail, vous pouvez utiliser par exemple un AutoResetEvent.

Une autre option, qui facilite la communication d'informations supplémentaires telles que le numéro de capteur, le type de dysfonctionnement, etc., vous pouvez envisager d'utiliser un BlockingCollection. Il y a un bon exemple de comment l'utiliser au bas de ce lien.