2015-10-14 72 views
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); 
    } 

简单地说,“计时器启动”被记录但没有在“计时器滴答”在该服务的服务器上运行。

堆栈: stack trace

为什么无法找到方法?

难道这是一个.net版本问题?

+2

您确定服务有权写入服务器上的事件日志吗? –

+0

这不是你的真实代码当然是什么样子。 System.Timers.Timer是一个非常非常令人讨厌的类。微软创建它是因为程序员无法弄清楚如何正确使用System.Threading.Timer。它完成“好”定时器类不能做的所有事情。包括捕获异常而不会造成程序崩溃。他们只是被吞下去,你不知道有什么地方出了问题。非常讨厌。不要使用它。 –

+0

我之前使用过System.Threading,但是我改变了它,看看它是否会有所作为,因为我认为这与事件有关。 –

回答

0

所以我的同事发现它是一个.net版本问题。如果您遇到此问题,请尝试使用不同的.net目标版本编译您的解决方案。

相关问题