导航

windows service學習隨筆

Posted on 2007-03-20 16:38  Wayne Chou  阅读(701)  评论(0)    收藏  举报

1.      關於windows service

   windows服務是在win32作業系統上於背景中執行的程式。服務可以在電腦啟動時自動啟動,也可以暫停或重新啟動,且都不會顯示任何使用者介面;可以在登入windows作業系統的情況下使用。

2.      手動安裝

   在命令列中,以您的專案輸出為參數執行 InstallUtil.exe。在命令列中輸入下列程式碼:

        安裝:installutil WindowsService1.exe

        卸載:installutil /u WindowsService1.exe

也可以程式安裝

   創建windows程式安裝專案,添加建置好的windows service。刪除時可以使用安裝文件刪除也可以在控制台添加刪除面板中刪除。

3.      啟動服務

   在服務管理器中啟動服務,作業系統會等候 30 秒,等待 OnStart 方法傳回。如果此方法沒有在這段時間內傳回結果,管理員會顯示服務無法啟動的錯誤(如下圖)

  
我現在用的方法是啟動服務時,啟動一個線程。MainSub中將是要做的工作。

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

                Dim t1 As Thread = New Thread(AddressOf MainSub)

                t1.Start()

      End Sub

4.      不能在服務程式中出現等待用戶響應的情況(例如彈出對話框)這將導致服務程式的阻塞。

5.      無法安裝服務時

    當無法安裝服務時,請查看是否有名稱相同的服務已經安裝了,因為服務名稱必須是唯一的,才能成功安裝。還有請確定該服務類別的 ServiceName 屬性是設定為與該服務的安裝程式中所顯示的設定值相同。這兩個執行個體中該屬性值必須相同,才能正確安裝您的服務。

6.      未解決的問題

   為了能在伺服器上建立一個監聽程式,以響應客戶端的呼叫驅動伺服器上的DataStage。在伺服器上使用TcpListener使用端口13000。服務啟動時就會進入循環監聽,然而在停止服務後,使用netstat命令查看發現13000端口仍被占用,直到10多秒後才釋放。這樣導致重啟服務或者停止服務後立即啟動服務會出錯(端口占用)。我在服務停止事件中中止線程,但問題還是未能解決。