Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何轻量注册周期性事件?_C#_Timer - Fatal编程技术网

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

C# 如何轻量注册周期性事件?,c#,timer,C#,Timer,我想每秒触发一些代码。通常,我会创建一个计时器并链接到它的事件。我想知道是否有更好的办法。可能没有实现IDisposable的要求 编辑:我主要关心的是LoC。我不想写一整堂课,因为这样的东西也能奏效: System.RegisterPeriodicEvent (1000, () => { Syso("asdf"); }; 在我的梦中,一旦当前威胁终止,此事件将自动取消注册 我觉得我应该编写一个实现上述方法的类。如果它没有损坏,就不要尝试修复它 每y运行x段代码的时间量是计时器所做的,而

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

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

System.RegisterPeriodicEvent (1000, () => { Syso("asdf"); };
在我的梦中,一旦当前威胁终止,此事件将自动取消注册


我觉得我应该编写一个实现上述方法的类。

如果它没有损坏,就不要尝试修复它

y
运行
x
段代码的时间量是计时器所做的,而且它做得非常好


至于避免IDisposable,实际上并不是这样,反正也不会造成内存泄漏。我能想到的唯一两种方法是使用内核原语计时器(需要释放,
IDisposable
),或者使用线程和
thread.Sleep()
或类似的方法(然后在完成时需要杀死线程,同样
IDisposable
)。

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


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

在哪种情况下?在windows应用程序中?在单线程或多线程应用程序中?IDisposable有什么问题(而且不是轻量级的)?是的,Windows应用程序。多线程的。IDIsPosiple没有错误,只是很多LOC,只有很少的实际值。我认为防止内存泄漏有相当重要的价值。并且使用<代码> USER({ } < /代码>),也不会有很多LOC。马修,是的,当然,我不想要MeM泄漏。使用计时器,我必须创建一个实现IDisposable的完整类,这相当于50行代码,而在给出的示例中只有1行。