我的程序从各种传感器收集数据,每当传感器读数出现问题时,我都必须发送电子邮件提醒用户。
为此,我分配了一个变量SEND_MSG来触发电子邮件发送事件。每当读数出现问题时,我都会将SEND_MSG设置为 999 和另一个线程,该线程循环并检查此变量会触发发送电子邮件过程。SEND_MSG的读/写操作发生在锁定语句中。
有没有更好的方法可以做到这一点?
谢谢。
您正在从线程轮询变量保持状态以传达状态。这不是一个非常有效的设计。
有许多线程间通信机制可以更优雅地处理这种情况。
有关机制的详细概述,请参阅 http://www.albahari.com/threading/
如果您只是想传达发送电子邮件的需要,则可以使用例如自动重置事件。
另一种选择,可以轻松传达其他信息,例如传感器编号、故障类型等,您可以考虑使用 BlockingCollection。在该链接的底部有一个关于如何使用它的很好的例子。