1

所以我有一个 System.Timers.timer,它会滴答数次,然后才被禁用。“Timer.Elapsed”事件订阅了一个事件处理程序,该事件处理程序计算滴答声并在一定数量的滴答声后禁用计时器。请注意,我没有取消订阅该活动。

在多次将事件订阅到同一个事件处理程序后,我意识到滴答间隔要短得多?

当 Timer.Elapsed 事件连续订阅事件处理程序而不取消订阅时会发生什么?

4

2 回答 2

1

如果您订阅的事件不止一个。每次函数将在事件 Invoke 时执行。

发生这种情况是因为每个函数在委托函数列表中都有单独的副本;

您可以使用此删除取消订阅的事件

timer.tick -= yourFunction();
于 2013-08-01T06:22:30.067 回答
0

如果您多次订阅一个事件,例如 10 次,则绑定到该事件的方法会被触发 10 次。

于 2013-08-01T06:16:52.767 回答