【发布时间】:2017-01-11 17:04:58
【问题描述】:
给定代码:
protected void Application_Start(object sender, EventArgs e)
{
var testTimer = new Timer(
LogTimer,
null,
new TimeSpan(0, 0, 0, 0),
new TimeSpan(0, 0, 0, 1)
);
}
public static void LogTimer(object sender)
{
"Hello".Log();
}
在看似随机的情况下,计时器停止触发,除非我重新启动网站,否则不会再次启动。
它不会抛出任何异常,但是查看 Windows 错误日志有一些条目:
DLL“C:\Windows\System32\Secur32.dll”中服务“Lsa”的打开过程失败。此服务的性能数据将不可用。数据部分的前四个字节 (DWORD) 包含错误代码。
无法打开服务器服务性能对象。数据部分的前四个字节 (DWORD) 包含状态代码。
站点处于活动状态(应用池的启动模式为AlwaysRunning。
我知道,出于这个原因,不推荐以这种方式使用计时器来处理关键问题,但我无法解释为什么它会默默地并且显然是随机地放弃。
【问题讨论】:
标签: c# asp.net timer global-asax