台灣最大程式設計社群網站
線上人數
1593
 
會員總數:240909
討論主題:186668
歡迎您免費加入會員
討論區列表 >> VB.NET >> Windows Service
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Windows Service
價值 : 10 QP  點閱數:210 回應數:0

樓主

星塵
門外漢
0 3
109 0
發送站內信

各位好:
我有一段程式碼如下:

ZipTestService : 服務名稱
\ZipTestService.exe : 路徑檔案名稱

InstallService(True, "Install") 安裝服務
InstallService(True, "Start") 啟動服務
InstallService(True, "Stop") 停止服務
InstallService(False "") 卸載服務

Public Sub InstallService(ByVal InstallBo As Boolean, ByVal State As String)
Try
Dim idt As IDictionary = New Hashtable
Dim ai As System.Configuration.Install.AssemblyInstaller = New System.Configuration.Install.AssemblyInstaller
idt.Add(0, ai.Path = System.IO.Directory.GetCurrentDirectory & "\ZipTestService.exe")
ai.UseNewContext = True
ai.Path = System.IO.Directory.GetCurrentDirectory & "\ZipTestService.exe"
Dim SVP As New System.ServiceProcess.ServiceController
SVP.ServiceName = "ZipTestService"
If InstallBo = True Then
Select Case State
Case "Install"
ai.Install(idt)
ai.Commit(idt)
SVP.Start()
Case "Start"
SVP.Start()
Case "Stop"
SVP.Stop()
End Select
Threading.Thread.Sleep(1500)
Dim intSt As Integer
Do
intSt = SVP.Status
Select Case SVP.Status
Case ServiceProcess.ServiceControllerStatus.Running
Debug.Print("服務已啟動")
Case ServiceProcess.ServiceControllerStatus.StartPending
Debug.Print("正在啟動服務")
Case ServiceProcess.ServiceControllerStatus.Stopped
Debug.Print("服務已停止")
Case ServiceProcess.ServiceControllerStatus.StopPending
Debug.Print("正在停止服務")
End Select
Loop Until intSt = 1 Or intSt = 4
If State = "Install" Then
Debug.Print("完成安裝服務")
End If
Else
Debug.Print("正解除服務")
Threading.Thread.Sleep(1000)
ai.Uninstall(idt)
Debug.Print("解除服務")
End If
Catch ex As Exception
MsgBox("請以系統管理員身分執行")
Me.Close()
End Try
End Sub
之前使用都沒有問題但是最近在「卸載服務」時會發生服務名稱在列表內無法被清除也無法操作也必須重新開機服務名稱才會從列表內清除,對於上段程式我有需要改進的地方嗎?

搜尋相關Tags的文章: [ Service ] ,
本篇文章發表於2017-08-18 14:19
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
[ 變換順序 ]   

回覆
如要回應,請先登入.