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