2010-01-15 47 views
3

HI guys, 我在C#中設計了一個Windows服務,需要時間來啓動(60-70秒)。我想知道它通常需要很長時間才能啓動,或者它是我的代碼花費了很多時間。 我有兩個線程,每6秒和1分鐘運行。C#windows服務是否需要時間才能在60-65秒左右開始?

如果需要那麼多時間,有人可以告訴我爲什麼需要那麼多時間。 不詳細只是一個概述。

+4

這取決於你正在運行的服務onStart() 然後theres一般系統的性能,你檢查了其他服務的啓動時間。 – 2010-01-15 16:13:01

+0

我只是設置定時器並初始化它們 – alice7 2010-01-15 16:13:45

+1

你確定沒有其他東西,比如循環檢查有時在磁盤驅動器中循環的磁盤,可能會導致代碼變慢,特別是使用flopy驅動器時(例如,如果你有它們) – 2010-01-15 16:17:51

回答

7

如果您的服務在啓動過程中做了很多工作(service.OnStart),啓動需要很長時間。

如果您希望立即啓動服務,請將工作推遲到另一個線程。

這假定正常的服務啓動是非常直接的。

+0

Ony的事情它設置了兩個定時器,每6秒和1分鐘運行一次。 最後的線程在服務啓動時檢查數據庫中的數據。你認爲這可能是原因嗎? – alice7 2010-01-15 16:20:52

+0

最後的線程檢查數據並採取相應的行動。像發送郵件等 – alice7 2010-01-15 16:21:25

+0

很可能是最後一個線程。檢查數據庫併發送電子郵件可能需要很長時間。 – Oded 2010-01-15 16:22:43

2

像奧德說,

 protected override void OnStart(string [] args) 
    { 
System.Threading.Thread workerThread =new System.Threading.Thread(longprocess()); 
workerThread.start(); 
    } 

private void longprocess() 
{ 
///long stuff 
} 

雖然這會讓你的服務能夠快速啓動也不會出示擔保是longprocess()將很快完成。

相關問題