事件触发器 - 最佳实践

时间:2016-05-24 21:02:15

标签: c# events parallel-processing event-handling

我的程序从各种传感器收集数据,每当传感器读数出现问题时,我都必须发送电子邮件提醒用户。

为此,我已经分配了一个变量SEND_MSG来触发电子邮件发送事件。每当读取时出现异常时,我将SEND_MSG设置为999,另一个循环并检查此变量的线程会触发发送电子邮件进程。 SEND_MSG的读/写操作发生在锁定语句中。

有更好的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在从线程轮询变量保持状态以进行通信状态。这不是一个非常有效的设计。

有许多线程间通信机制可以更优雅地处理这种情况。

有关机制的详细概述,请参阅http://www.albahari.com/threading/

如果您只是想传达发送电子邮件的需求,可以使用例如AutoResetEvent

另一个选项,可以轻松传达其他信息,如传感器编号,故障类型等,您可以考虑使用BlockingCollection。有一个很好的例子,说明如何在该链接的底部使用它。