封装事件处理程序

本文关键字:程序 事件处理 封装 | 更新日期: 2023-09-27 18:19:37

我开发了一个事件处理程序,它监视串行端口并解析返回的字节以获得温度值。我的问题是,我如何将这种价值体现在我的课程的其余部分?事件和新值在我的事件处理程序中,因此我的解决方案的其他部分不知道它。我不能在外部定义一个方法来请求它,因为解决方案的其余部分不知道新数据何时通过事件处理程序进入并更改变量。

我想,我可以把它写在表单上某个地方的文本框的新行中,但这似乎与封装背道而驰。

有合理的方法吗?

封装事件处理程序

听起来您可能应该公开另一个事件,例如,系统的其他部分可以订阅-TemperatureChanged。然后,当您的事件处理程序(连接到串行端口)注意到温度发生变化时,它会引发TemperatureChanged事件。

您的TemperatureChanged事件应该具有适当的类型,这样订阅者只需关心温度变化,而不必关心您解释的原始数据。(它可能是某种描述的EventHandler<TEventArgs>。)

另一种选择是,您可以只拥有一个Temperature属性,并相应地实现INotifyPropertyChanged,从而在更改事件处理程序中的属性时引发事件。这在很大程度上是等效的,但更通用——许多代码(尤其是WPF中的代码)都知道如何处理INotifyPropertyChanged