所以我知道,因为问题Can Timers get automatically garbage collected?,System.Timers.Timer
首先不会被垃圾收集。
但我的实际问题是 - 我是否必须停止或处理Timer?
private void CreateTimer()
{
var timer = new Timer();
timer.Elapsed += TimerElapsed;
timer.Interval = 30000;
timer.AutoReset = true;
timer.Enabled = true;
}
我的意思是这个Timer会永远运行。但是现在我不再需要在方法中创建Timer的对象了。我是否必须停止或处置它被垃圾收集的Timer
?
答案 0 :(得分:3)
在你打电话给.Dispose()
之前,我认为不会收集垃圾。你是否.Stop()
计时器并不重要。 击>
因此,调用Timer.Stop()
或将Timer.Enabled
设置为false似乎已足够,因为这会为您调用Timer.Dispose()
。
参考:Timer.Enabled
来自MSDN:
在释放对Component的最后一个引用之前,请始终调用Dispose。否则,在垃圾回收器调用Component对象的Finalize方法之前,不会释放它正在使用的资源。 More here
如果您希望将其自动处理掉,请使用Timer.Elapsed
属性将该逻辑放在单独的方法中,如Here所述。