9

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

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

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

我的问题是,在不使用那么多内存的情况下每隔几秒执行一次的正确方法是什么?

4

2 回答 2

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

于 2013-01-13T16:18:00.450 回答
4

你需要使用Timer类。

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

阅读答案以了解应在何处使用哪个计时器。

以下是有趣的阅读。
比较 .NET Framework 类库中的计时器类

于 2013-01-13T16:22:05.380 回答