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

System.Threading.Timer:它为啥讨厌我?

System.Threading.Timer 在 25-30 次后停止 [重复]