2010-07-20 190 views
0

我們編寫了一個需要一段時間啓動的自定義Windows服務(VB.NET,.NET Framework 2.0),因爲它會上傳銷售。Windows服務啓動導致Windows錯誤

Protected Overrides Sub OnStart(ByVal args() As String) 
    -- upload sales here 
End Sub 

這一事實,它需要很長的時間來啓動是好的,但在Windows生成超時錯誤,並啓動其他程序不會被添加到系統托盤。

我們可以延遲銷售上傳,但寧願讓Windows忽略這一事實,即該服務需要很長時間才能啓動並且不會產生錯誤。有任何想法嗎?

回答

5

開始在另一個線程上傳銷售代碼,這會在後臺運行上傳代碼,讓服務響應,它的開始,你不會得到超時消息

Protected Overrides Sub OnStart(ByVal args() As String) 

    Dim start as new ThreadStart(UploadSalesMethod) 
    Dim t as new Thread(start) 
    t.Start() 

End Sub 
4

OnStart方法中的代碼不能運行太久。所以如果你有一個很長的運行代碼,那麼在另一個線程下運行,所以OnStart事件將返回更早。

1

要直接解決您的問題,「寧願讓Windows忽略此服務需要很長時間才能啓動並且不會產生錯誤」的事實,您可以通過調用ServiceBase上的RequestAdditionalTime來簡單地增加啓動超時值。