线程在计时器上运行仅在应用启动时触发一次
本文关键字:一次 启动 计时器 运行 线程 应用 | 更新日期: 2023-09-27 18:31:21
我正在尝试让一种方法在托管我的 Web 应用程序的服务器上每分钟运行一次。在Global.asax.cs
Application_Start()
中,我有以下代码:
var timer = new System.Threading.Timer(
e => DatMethod(),
null,
TimeSpan.Zero,
TimeSpan.FromMinutes(1)
);
目前,我只需要DatMethod
写入带有时间戳的文本文件。当我点击F5
并开始调试时,我可以看到它写了一次,但它再也不会运行了。
这是放置代码的正确位置吗?如果是这样,我做错了什么?如果没有,如何正确设置?
如果使用 10 秒间隔而不是一分钟,那么您可以看到您的代码将被执行多次,但您的代码不会永远继续执行,因为垃圾回收器会在一段时间后收集您的计时器实例,并且在 Timer 类的终结器方法中,它会停止所有活动。如果对计时器类使用静态变量,则不会有任何问题但是等等,这种方法在 ASP.NET 线程机制方面存在一些问题。相反,你必须使用类似 http://www.quartz-scheduler.net/您可能还对 http://msdn.microsoft.com/en-us/library/dn636893(v=vs.110)感兴趣.aspx如果需要任何其他信息,请告诉我。