在c#中什么时候应该使用事件?

本文关键字:事件 什么时候 | 更新日期: 2023-09-27 18:10:20

我是c#和WPF的新手。我刚刚用c#学习了异步编程。我们触发事件,并在某些地方捕捉到这个事件。

这个方法的优点是我们不需要直接调用object方法。示例:从数据库中加载数据,加载数据方法完成后引发事件LoadDataSuccessfully然后主类捕获此事件并引发事件UpdateGUIAfterLoadDataSuccessfully,其他控件将捕获此事件并更新GUI。

但是现在我认为可能是……我在我的项目中使用得太多了,可能是我过度使用了。请给我一些建议,什么时候应该使用Event,什么时候应该使用传统的方式。

在c#中什么时候应该使用事件?

当产生动作的代码不适合直接了解对该动作作出反应的代码时,应该使用事件。

让我们用一个例子来解释

在你的系统中,你有数据对象发送给你假设你每分钟从外部系统发送50个数据对象。在收到此消息后,您需要将其由另一个对象处理。

在这种情况下,事件或简单的方法调用会更好吗?

一方面,事件在这里听起来很合适,因为处理数据接收的代码不应该依赖于对所述数据执行操作的代码的实现。否则,数据接收代码现在负责两件事——接收数据和委托处理数据

另一方面,如果数据的特定处理直接与外部调用者发送的行为联系在一起,则将其作为函数调用

可能更有意义

看看这个

以下是对你上面所写内容的一些评论/回答

"这个方法的优点是我们不需要直接调用object方法。-这是真的,但这并不意味着你应该为所有事情设置事件,并完全避免显式的方法调用。凯尔举的例子很好。另外——看看。net默认情况下是如何使用事件的——它们只将事件用于异步事件(鼠标单击、鼠标悬停等)

"示例我们从数据库中加载数据,然后在加载数据方法完成后,它成功地引发事件loaddatassuccessful .然后主类捕获此事件并引发事件updateguiafterloaddatassuccessful .其他控件将捕获此事件并更新GUI。-我只会在数据需要不时刷新的情况下使用这种方法,但我甚至不确定。不使用事件来加载数据是很常见的。请注意,您所写的内容意味着您有一个线程用于加载数据,另一个线程用于GUI…

"我在我的项目中使用它太多了,可能是我过度使用它了。——在这一点上你可能是对的。

总之,'Event'是用来让其他对象决定在事件触发器上应该执行什么动作或代码,但我建议开始使用'Commands'获取更多信息http://msdn.microsoft.com/en-IN/library/ms752308.aspx