2015-10-14 94 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目標版本編譯您的解決方案。

相關問題