我正在創建一個Windows服務,安裝服務後,它停止並立即啓動,但它不應該是根本。以前,我得到的服務沒有及時響應啓動命令的錯誤,所以我把初始化代碼,並把它在一個線程,現在我在這裏:窗口服務停止並立即啓動,但它不應該
protected override void OnStart(string[] args)
{
this.EventLog.WriteEntry("ATNotifier Started");
ThreadPool.QueueUserWorkItem(WaitOnEmailsChanged);
ThreadPool.QueueUserWorkItem(Init, "IP");
}
的waitonemailschanged線程只需創建一個filesystemwatcher來觀察設置文件(xml文檔)是否被更改,並在該文件中加載數據(如果發生這種情況)。目前,這只是無限期地等待(這是一般情況,因爲這隻會每年更改幾次),因爲沒有對xml文檔進行更改。
Init線程執行各種操作,包括創建和啓動一個System.Timers.Timer對象,它的Elapsed方法是服務的肉。
我不明白爲什麼它會開始,然後立即停止。我還應該注意,eventviewer顯示沒有來自這個應用程序的日誌。
編輯>我試圖創建「適當」的主題,使用了相同的結果,我已經刪除以外的所有創建和定時器像這樣的開始:
protected override void OnStart(string[] args)
{
this.EventLog.WriteEntry("ATNotifier Started");
m_Timer = new System.Timers.Timer(90000.0); // 1.5 mins
m_Timer.Elapsed += new ElapsedEventHandler(m_Timer_Elapsed);
m_Timer.Start();
}
,我仍然得到同樣的信息。這幾乎就像OnStart從未被調用過。
我只是刪除一切,除了用於創建和啓動定時器,具有相同的結果。 – 2009-02-17 22:18:11