我用C#编写了一个控制台应用程序,我的代码是这样的:
while(true)
{
//do some stuff
System.Threading.Thread.Sleep(60000)
}
我注意到我的应用程序的内存使用量大约为14k而“休眠”。 但后来我引用了System.Windows.Forms并使用了一个计时器,我注意到内存使用率大幅下降。
我的问题是,在没有使用那么多内存的情况下,每隔几秒就执行某项操作的正确方法是什么?
答案 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.Timer
,System.Threading.Timer
,System.Windows.Forms.Timer
,System.Windows.Threading.DispatcherTimer
),这取决于要使用哪个计时器。
阅读this回答,了解应该使用哪个计时器。
以下是一本有趣的读物 Comparing the Timer Classes in the .NET Framework Class Library