【问题标题】:What happens when I subscribe to a Timer.Elapsed event more than once?当我多次订阅 Timer.Elapsed 事件时会发生什么?
【发布时间】:2013-08-01 06:13:50
【问题描述】:

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

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

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

【问题讨论】:

  • 发生内存泄漏...

标签: c# timer event-handling


【解决方案1】:

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

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

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

timer.tick -= yourFunction();

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2012-09-11
      • 2021-10-12
      • 1970-01-01
      相关资源
      最近更新 更多