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会被收集垃圾。计时器仍然有效的事实并不能阻止它被收集。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步