计时器如何在.NET中工作?

时间:2013-01-13 16:11:21

标签: c# .net multithreading timer

我用C#编写了一个控制台应用程序,我的代码是这样的:

 while(true)
 {
 //do some stuff
     System.Threading.Thread.Sleep(60000)
 }

我注意到我的应用程序的内存使用量大约为14k而“休眠”。 但后来我引用了System.Windows.Forms并使用了一个计时器,我注意到内存使用率大幅下降。

我的问题是,在没有使用那么多内存的情况下,每隔几秒就执行某项操作的正确方法是什么?

2 个答案:

答案 0 :(得分:12)

您应该使用System.Timers.Timer

添加一个处理Elapsed事件并执行所需代码的方法。在你的情况下:

System.Timers.Timer _timer = new System.Timers.Timer();

_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
_timer.Interval = 60000;
_timer.Enabled = true;

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
   // add your code here
}

这是关于两个Timers

之间差异的好帖子

答案 1 :(得分:4)

您需要使用Timer类。

有多个内置计时器(System.Timers.TimerSystem.Threading.TimerSystem.Windows.Forms.TimerSystem.Windows.Threading.DispatcherTimer),这取决于要使用哪个计时器。

阅读this回答,了解应该使用哪个计时器。

以下是一本有趣的读物 Comparing the Timer Classes in the .NET Framework Class Library