2016-05-24 5 views
-1

Mein Programm sammelt Daten von verschiedenen Sensoren und wenn etwas mit dem Sensor nicht stimmt, muss ich eine E-Mail senden, um den Benutzer zu benachrichtigen.Ereignisauslöser - Best Practices

Dafür habe ich eine Variable SEND_MSG zugewiesen, um das E-Mail-Sendeereignis auszulösen. Wann immer etwas mit dem Lesen aus ist, setze ich SEND_MSG auf 999 und ein anderer Thread, der diese Variable wiederholt und prüft, löst den Sende-E-Mail-Prozess aus. Die Lese-/Schreiboperation von SEND_MSG findet innerhalb einer Sperranweisung statt.

Gibt es einen besseren Weg, dies zu tun?

Vielen Dank.

Antwort

0

Sie rufen einen Variablenhaltezustand von einem Thread ab, um den Status zu kommunizieren. Das ist kein sehr effizientes Design.

Es gibt eine Reihe von Inter-Thread-Kommunikationsmechanismen, die diese Situation viel eleganter handhaben.

Für einen guten Überblick über die Mechanismen sehen http://www.albahari.com/threading/

Wenn Sie einfach nur die Notwendigkeit kommunizieren wollen eine E-Mail zu senden, können Sie zum Beispiel ein AutoResetEvent verwenden können.

Eine weitere Option, mit der Sie einfach zusätzliche Informationen wie Sensornummer, Fehlertyp usw. mitteilen können, ist die Verwendung eines BlockingCollection. Es gibt ein gutes Beispiel dafür, wie man es am Ende dieses Links verwendet.