我们什么时候应该在C#中使用事件

时间:2013-04-22 04:52:28

标签: c# wpf event-handling conceptual

我是C#和WPF的新手。我刚学会了C#中的异步编程。 我们举起活动和一些我们抓住这个活动的地方。

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

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

3 个答案:

答案 0 :(得分:3)

当发起操作的代码不适合直接了解对该操作做出反应的代码时,应使用事件。

让我们在示例的帮助下解释

<强>问题

在您的系统中,您发送给您的数据对象表示您每分钟从外部系统发送50个数据对象。收到此对象后,您需要让它由另一个对象处理。

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

<强>答案

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

另一方面,如果数据的特定处理与外部调用者发送的行为直接相关,那么将其作为函数调用可能更有意义

查看this

答案 1 :(得分:2)

以下是您对上述内容的几点评论/答案

“这个方法的优点是我们不需要直接调用对象方法。” - true但这并不意味着你应该为所有事件做事件并且完全避免使用显式方法调用。示例Kyle提供的是一个很好的例子。另外 - 看看默认情况下如何在.NET中使用事件 - 它们仅使用if到异步事件(鼠标单击,鼠标悬停等)

“我们从数据库加载数据的示例,然后在加载数据方法完成后,它引发事件LoadDataSuccessfully然后主类捕获此事件并引发事件UpdateGUIAfterLoadDataSuccessfully,其他一些Control将捕获此事件并更新GUI。” - I如果需要不时刷新数据但是不确定,那么只能采用这种方法。通常不使用事件以此处描述的方式加载数据。请注意,您所写的内容暗示您有一个用于加载数据的线程,另一个用于GUI ...

“我在我的项目中使用得太多,可能是我过度使用它了。” - 你可能对此很正确。

答案 2 :(得分:1)

总之&#39;活动&#39;用于让其他对象决定应该在事件触发器上执行哪些操作或代码,但我建议开始使用&#39;命令&#39;了解更多信息http://msdn.microsoft.com/en-IN/library/ms752308.aspx