Pet*_*ter 5 c# garbage-collection timer
所以我知道因为计时器可以自动收集垃圾吗?一开始System.Timers.Timer就不会被垃圾收集。
但我的实际问题是 - 我是否必须停止或处置计时器?
private void CreateTimer()
{
var timer = new Timer();
timer.Elapsed += TimerElapsed;
timer.Interval = 30000;
timer.AutoReset = true;
timer.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
我的意思是这个计时器将永远运行。但是现在我不再需要在方法中创建计时器的对象了。我是否必须停止或处理Timer它被垃圾收集的东西?
我不认为它会被垃圾收集,直到你调用.Dispose()它。你是否.Stop()是定时器都没有关系。
因此,调用Timer.Stop()或设置Timer.Enabled为 false似乎就足够了,因为这需要Timer.Dispose()您。Ref: Timer.Enabled
来自 MSDN:
在释放对组件的最后一个引用之前,请始终调用 Dispose。否则,在垃圾收集器调用 Component 对象的 Finalize 方法之前,它使用的资源不会被释放。 更多在这里
如果您希望它被自动处理掉,请使用此处所述的Timer.Elapsed属性将该逻辑放在单独的方法中。
| 归档时间: |
|
| 查看次数: |
3754 次 |
| 最近记录: |