如何在 C# 中调度事件
我希望创建自己的事件并调度它们。 我以前从未在 C# 中这样做过,只在 Flex 中这样做过。我想一定有很多差异。
谁能给我一个很好的例子吗?
I wish to create own events and dispatch them.
I never done this before in C#, only in Flex.. I guess there must be a lot of differencies.
Can anyone provide me a good example?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
所有库类中都使用一种模式。也建议您自己的类使用它,尤其是框架/库代码。但当你偏离或跳过几步时,没有人会阻止你。
下面是基于最简单的事件委托
System.Eventhandler
的原理图。以及如何使用它:
当您有信息要传递时:
更新
从 C# 6 开始,“触发器”方法中的调用代码变得更加容易,可以使用 null 条件运算符
缩短 null 测试?.
无需制作副本,同时保持线程安全:There is a pattern that is used in all library classes. It is recommended for your own classes too, especially for framework/library code. But nobody will stop you when you deviate or skip a few steps.
Here is a schematic based on the simplest event-delegate,
System.Eventhandler
.And how to use it:
And when you have information to pass along:
Update
Starting with C# 6 the calling code in the 'Trigger' method has become a lot easier, the null test can be shortened with the null-conditional operator
?.
without making a copy while keeping thread-safety:C# 中的事件使用委托。
Events in C# use delegates.
使用典型的 .NET 事件模式,并假设您的事件中不需要任何特殊参数。您的典型事件和调度模式如下所示。
将某些内容绑定到事件中可以非常简单:
查看 上的链接此 MSDN 页面
Using the typical .NET event pattern, and assuming you don't need any special arguments in your event. Your typical event and dispatch pattern looks like this.
Tying something into the event can be as simple as:
Take a look at the links on this MSDN page
查看'委托'。
希望这有帮助,
Look into 'delegates'.
Hope this helps,