2009年8月24日 星期一

建立Windows Service(M07)

認識Windows服務(Service)

  • 作業系統的常駐程式
=>默默在背景執行的程式
=>電腦啟動時自動啟動
  • 例如
透過網路存取別人電腦資料時。
1、Server:提供透過網路存取服務(提供資源)
2、Workstation:提供與遠端使用者連線的用戶端服務(要求存取資源)
=>Windows服務是系統的常駐程式,在系統開機之後,不需經由使用者登入及啟動,服務就會自動啟動,並且在背景默默的執行服務程式。
=>Windows Service專案也是建置為.exe檔,但此程式並不能直接執行,而是必須先安裝到服務管理員啟動

=>Service類別屬性
  • 決定服務是否可啟用、停止、暫停與繼續
  • CanStop:預設為True
  • CanPauseAndContinue:預設為False
  • CanShutdown:預設為False
  • AutoLog:預設為True
=>Service類別事件
  • OnStart:啟用服務會執行的程式
  • OnStop:停用服務會執行的程式
程式實作
1、建立Windows Service的專案步驟如下:
a、File-->New Project-->Project types:選取Windows,在Templates:選取Windows Service

b、改寫Service類別的OnStart與OnStop程序
Imports System.IO

Public Class Service1
Dim WithEvents serviceTimer As System.Timers.Timer

Public Sub New()

' 此為 Windows Form 設計工具所需的呼叫。
InitializeComponent()

' 在 InitializeComponent() 呼叫之後加入任何初始設定。
serviceTimer = New System.Timers.Timer
serviceTimer.Interval = 60000
End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
serviceTimer.Start()

End Sub

Protected Overrides Sub OnStop()
serviceTimer.Stop()

End Sub

Private Sub serviceTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles serviceTimer.Elapsed
Dim cDrive As New driveinfo("C:\")
eventlog.WriteEntry("目前磁碟的剩餘空間:" & cdrive.TotalFreeSpace)
End Sub
End Class

c、加入安裝程式,並設定安裝屬性
d、建置專案
e、安裝服務
(1)使用InstallUtil.exe(適用於開發測試)
VS2005-->VS TOOL-->命令執行工具

安裝
InstallUtil 服務.exe
移除
InstallUtil 服務.exe -u
ps:將服務.exe直接拉至命令提示列就會自動帶出路徑

(2)使用安裝專案
f、從「服務管理員」啟動服務

沒有留言:

張貼留言