在c# . net中管理事件订阅的动态列表

本文关键字:动态 列表 事件 net 管理 | 更新日期: 2023-09-27 18:01:39

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

在c# . net中管理事件订阅的动态列表

这将有助于了解您使用的语言。在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()中的括号中,并将它们适当地传递给处理程序。