1

我是 C# 和 WPF 的新手。我刚刚学习了 C# 中的异步编程。我们提出事件和一些我们捕捉到这个事件的地方。

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

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

4

3 回答 3

3

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

让我们借助示例进行解释

问题

在您的系统中,您收到了发送给您的数据对象,说您每分钟从外部系统发送 50 个数据对象。收到此数据后,您需要让另一个对象对其进行处理。

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

回答

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

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

看看这个

于 2013-04-22T05:30:07.697 回答
2

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

“这种方法的好处是我们不需要直接调用对象方法。” – 是的,但这并不意味着您应该为所有事情发生事件并完全避免显式方法调用。Kyle 提供的示例是一个很好的示例。另外——看看默认情况下.NET中事件是如何使用的——它们只使用if来异步事件(鼠标单击、鼠标悬停等)

“示例我们从数据库加载数据,然后在加载数据方法完成后,它会引发事件 LoadDataSuccessfully 然后主类捕获此事件并引发事件 UpdateGUIAfterLoadDataSuccessfully,其他一些控件将捕获此事件并更新 GUI。” – 如果数据需要不时刷新但我什至不确定,我只会使用这种方法。不使用事件以您在此处描述的方式加载数据是很常见的。请注意,您所写的内容意味着您有一个线程用于加载数据,另一个线程用于 GUI……</p>

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

于 2013-04-22T12:32:50.660 回答
1

简而言之,“事件”用于让其他对象决定应在事件触发器上执行哪些操作或代码,但我建议开始使用“命令”以获取更多信息http://msdn.microsoft.com/en-IN /库/ms752308.aspx

于 2013-04-22T07:27:40.907 回答