我正在用 C# 编写一个控制台应用程序,我的代码是这样的:
while(true)
{
//do some stuff
System.Threading.Thread.Sleep(60000)
}
我注意到“睡眠”时我的应用程序的内存使用量约为 14k。但后来我引用了 System.Windows.Forms 并使用了一个计时器,我注意到内存使用量大幅下降。
我的问题是,在不使用那么多内存的情况下每隔几秒执行一次的正确方法是什么?
我正在用 C# 编写一个控制台应用程序,我的代码是这样的:
while(true)
{
//do some stuff
System.Threading.Thread.Sleep(60000)
}
我注意到“睡眠”时我的应用程序的内存使用量约为 14k。但后来我引用了 System.Windows.Forms 并使用了一个计时器,我注意到内存使用量大幅下降。
我的问题是,在不使用那么多内存的情况下每隔几秒执行一次的正确方法是什么?
你应该使用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
:
你需要使用Timer
类。
有多个内置定时器(System.Timers.Timer
, System.Threading.Timer
, System.Windows.Forms.Timer
, System.Windows.Threading.DispatcherTimer
),这取决于使用哪个定时器的要求。
阅读此答案以了解应在何处使用哪个计时器。
以下是有趣的阅读。
比较 .NET Framework 类库中的计时器类