【发布时间】:2019-07-03 20:47:48
【问题描述】:
我不确定如何最好地取消正在运行系统计时器的任务。 在下面的代码中,每 60 分钟计时器将经过一次,然后运行另一个方法 (CheckFileOverflow),该方法用于检查系统日志 txt 的文件大小。文件
理想情况下,计时器的取消将通过单击按钮或调用取消的其他方法来完成。只要软件正在运行,计时器就可以有效地运行,但是当用户最终关闭软件时,我希望能够以负责任的方式取消任务,即不冒正在进行的线程池的风险在后台使用的资源挥之不去。
我花了很多时间阅读取消令牌,但仍然不明白:(
public void SystemEventLoggerTimer()
{
SysEvntLogFileChckTimerRun = true;
Task.Run(() =>
{
System.Timers.Timer timer = new System.Timers.Timer
{ Interval = 1000 * 60 * 60 };
timer.Elapsed += new ElapsedEventHandler(CheckFileOverflow);
timer.Start();
});
}
【问题讨论】:
-
SystemEventLoggerTimer() 什么时候被调用?
标签: c# cancellationtokensource system.timers.timer