【问题标题】:managing a dynamic list of event subscriptions in C# .NET在 C# .NET 中管理事件订阅的动态列表
【发布时间】:2014-06-19 17:54:37
【问题描述】:

如果我有一堆动态创建或销毁的相同类的对象,并且我想订阅每个对象中的一个事件,我将如何管理这些订阅? .NET 中是否有一个可以保存事件订阅列表的类?该场景将是一个气象站,其实时数据显示在地图上。对于地图上可见的每个气象站,我都会订阅一个传感器。但是,当该站不再可见时,我将取消订阅该事件。或者更好的解决方案是管理对象本身。

【问题讨论】:

    标签: c# .net events object dynamic


    【解决方案1】:

    了解您使用的语言会有所帮助。在 VB.NET 中有一个很棒的东西叫做 AddHandler 可以将任何对象的事件连接到一个过程。

    假设您在获取要跟踪的对象时执行此过程(EventClass 是引发 StuffHappened 事件的类,不提供其他参数):

    Sub AddEntity(Entity As EventClass)
        ' do the normal stuff, add to list maybe
        AddHandler Entity.StuffHappened, Sub() Happenings(Entity)
    End Sub
    

    Sub() Happenings(Entity) 是一个 lambda,一个迷你子例程,在这种情况下,它关闭了 Entity 对象。因此,当类引发事件时,您的 Happenings 子将被调用,引发者作为参数传递。如果您的事件提供了一些参数,请将它们包含在 Sub() 的括号中,并将它们适当地传递给您的处理程序。

    【讨论】:

    • 我在 c# 中执行此操作,您所描述的听起来像是一种将我的对象事件注册到某个事件处理程序的方法,在我的情况下是更新图像。当不再需要对象时,我将如何处理注册事件?我可以取消订阅那个对象事件吗?
    猜你喜欢
    • 2010-09-07
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多