2012-08-23 17 views
3

我有一個應該監聽HTTP請求的Windows服務。我爲此使用HttpListener。該服務已成功完成其工作。 但是,當服務設置爲在系統啓動時自動啓動時,我在HTTP初始化中有一段延遲。 HttpListener構造函數需要1到2分鐘才能返回。因此,用戶已成功登錄,例如他的Messenger已在線。 我讀過HttpListener使用HTTP.SYS:內核模式http偵聽器,因此可能是系統正在初始化時正常。HttpListener構造函數在系統啓動時花費太長時間

我的問題是: 1)HttpListener在初始化中有這樣的延遲是否正常? 2)是否有任何解決方法可以避免這種延遲(除非不使用HttpListener)?

編輯: 問題不在Windows 7上重現。我只能在Windows XP機器上重現它。

+0

我在HttpListener上的經驗(誠實地說..有限)在施工過程中從未有過這種延遲。事實上,我記得它幾乎立即初始化.. –

+0

這幾乎是即時初始化系統啓動時執行? – inso

+0

那麼沒有。但是,如果這是你的問題,那麼我的迴應是,它會每次都改變,取決於你運行它的計算機。 –

回答

0

我找到了解決方法。

我從服務的「OnStart線程」調用HttpListener構造函數。如果我在另一個線程中移動構造函數調用,並從服務的OnStart方法返回,HttpListener像往常一樣快速初始化。

我不知道爲什麼會這樣。只能假設稍後在系統啓動時初始化HttpListener所需的某個組件。

順便說一下,問題不會在Windows 7上重現。我只能在Windows XP機器上重現它。