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会被收集垃圾。计时器仍然有效的事实并不能阻止它被收集。