代码之家  ›  专栏  ›  技术社区  ›  mafu

如何轻量注册周期性事件?

  •  0
  • mafu  · 技术社区  · 16 年前

    我想每秒触发一些代码。通常,我会创建一个计时器并链接到它的事件。我想知道是否有更好的办法。可能没有实现IDisposable的要求。

    编辑: 我主要关心的是LoC。我不想写一整堂课,因为这样的东西也能奏效:

    System.RegisterPeriodicEvent (1000, () => { Syso("asdf"); };
    

    在我的梦中,一旦当前威胁终止,此事件将自动取消注册。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Matthew Scharley    16 年前

    如果它没有坏,就不要试图修理它。

    跑步 x 每段代码 y 时间量是计时器所做的,而且它做得非常好。

    至于避免 IDisposable ,不是真的,无论如何都会造成内存泄漏。我能想到的唯一两种方法是使用内核原语计时器(需要释放, ),或用一根线和 Thread.Sleep() 或者类似的(然后你需要在完成后再次终止线程) 可识别 ).

        2
  •  0
  •   Julian Birch    16 年前

    这并不是一种轻量级的方式,但是Retlang有非常好的计时器功能。特别是,它预先处理了严重的线程问题(通过序列化调用),并允许您将事件驱动的工作与计时器交错。

    最重要的是,你处理了光纤,也处理了事件。但这并不是一件小事:您必须围绕API设计代码(稍后您会认为这是值得的,但一开始看起来像是脖子上的痛)。