0
我正在处理一个windows服务,该服务以5秒为间隔将文件导入数据库系统。当我在本地机器上运行这个服务时,所有东西都正常运行,但是当我将它复制到服务器上并运行它时,计时器事件不会被调用。定时器事件在本地运行时调用,但不在服务器计算机上运行
代码:
protected override void OnStart(string[] args)
{
timer = new Timer(new TimerCallback(Timer_Tick), null, new TimeSpan(0, 0, 5), new TimeSpan(0, 0, 5));
EventLog.WriteEntry("Timer started.", System.Diagnostics.EventLogEntryType.Information);
}
private void Timer_Tick(object s)
{
EventLog.WriteEntry("Timer ticking.", System.Diagnostics.EventLogEntryType.Information);
}
简单地说,“计时器启动”被记录但没有在“计时器滴答”在该服务的服务器上运行。
堆栈:
为什么无法找到方法?
难道这是一个.net版本问题?
您确定服务有权写入服务器上的事件日志吗? –
这不是你的真实代码当然是什么样子。 System.Timers.Timer是一个非常非常令人讨厌的类。微软创建它是因为程序员无法弄清楚如何正确使用System.Threading.Timer。它完成“好”定时器类不能做的所有事情。包括捕获异常而不会造成程序崩溃。他们只是被吞下去,你不知道有什么地方出了问题。非常讨厌。不要使用它。 –
我之前使用过System.Threading,但是我改变了它,看看它是否会有所作为,因为我认为这与事件有关。 –