System.Threading.Timer
Posted Coder_小菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.Threading.Timer相关的知识,希望对你有一定的参考价值。
/// <summary> /// 清理数据 /// </summary> public void Clear() { // 立即启动计时器 Timer tClear = new Timer((state) => { BLLCommon.Clear(); }); /* 若是只在构造函数中设置间隔时间,页没有这一行时,则只执行一次 */ tClear.Change(TimeSpan.FromSeconds(0), TimeSpan.FromHours(CMMConstants.ClearInterval)); } PS: 在将Timer定义成全局变量,并在程序启动方法中调用 Change 方法时,按预期执行 。 直接new一个Timer实例,只执行一次的原因是否是因为被垃圾回收器回收了 ?
msdn上的一句话:
只要你使用的是Timer,你必须保留对它的引用。与任何托管对象一样,当没有引用它时,Timer会被收集垃圾。计时器仍然有效的事实并不能阻止它被收集。
以上是关于System.Threading.Timer的主要内容,如果未能解决你的问题,请参考以下文章
为啥 System.Timers.Timer 能在 GC 中存活,而 System.Threading.Timer 不能?
System.Threading.Timer 杀死 PowerShell 控制台
System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer
如何在 C# 中创建计时器而不使用 System.Timers.Timer 或 System.Threading.Timer