获取 Timer.Elapsed 事件的订阅者列表



我正在尝试找到一种方法来确定计时器已用事件的订阅者数量。从我的搜索来看,似乎我应该使用GetInvocationList((。但是当我尝试时:

Private _schedulingTimer As Timers.Timer
Private Sub SomeMethod()
        dim test = _schedulingTimer.Elapsed.GetInvocationList()
End Sub

我收到以下错误:

"公共事件已用为

已用事件处理程序"是一个事件,不能直接调用。使用"RaiseEvent"语句引发事件。

我做错了什么吗?有没有其他方法可以得到我想要的东西?

您可以在委托上调用GetInvocationList,但事件不是委托 - 事件只是公开"订阅"和"取消订阅"操作的一致方式,以及实现这些操作的简单方法(使用委托(。

访问事件的已注册处理程序根本不是事件抽象的一部分。它们的确切存储方式是一个实现细节 - 就像属性的值如何存储在字段中一样,或者可以按需计算(例如,从多个字段(。

在公开事件的类中,您通常可以访问调用列表(因为您可以确定事件是如何实现的(,但它不是"从外部"获得的信息。

最新更新