Windows服務是在後台運行的
它沒有用戶界面,比較適合處理不要與用戶交互的任務
它可以運行在win2000,winXp,WinNt等操作系統上
關於如何編寫簡單windows服務應用程序
大家可以參考
http://chs.gotdotnet.com/QuickStart/howto/default.aspx?url=/quickstart/howto/doc/SimpleService.aspx
我在這裡就個人的學習心得,做了一個小總結:
Microsoft Windows服務使用System.ServiceProcess空間的類來創建,安裝,控制
其中:
類System.ServiceProcess.ServiceBase用來創建服務
類System.ServiceProcess.ServiceInstaller和System.ServiceProcess.ServiceProcessInstaller用來安裝服務
ServiceInstaller類擴展ServiceBase來實現服務。在安裝服務應用程序時由安裝實用工具調用該類
ServiceProcessInstaller安裝一個可執行文件,該文件包含擴展 ServiceBase 的類。該類由安裝實用工具(如 InstallUtil.exe)在安裝服務應用程序時調用
讓我們先來認識ServiceBase的幾個比較重要的屬性和方法:
屬性ServiceName是得到服務的名稱
屬性AutoLog是指示是否在事件日志中報告“開始”、“停止”、“暫停”以及“繼續”命令。
當它為true時,系統會自動在“應用程序”事件日志報告狀態
當將AutoLog 設置為 false,我們可以在事件中處理自己的日志
屬性CanStop是指示服務啟動後是否可以停止
如果為 true,服務可以停止並調用了OnStop 方法
同樣屬性CanShutdown和CanPauseAndContinue,CanShutdown也是類似的意思
虛方法OnStop是在服務收到“停止”命令時進行的,注意當CanStop=false是不調用此方法的
虛方法OnStart是服務收到“開始”命令時進行的
虛方法OnPause是服務收到“暫停”命令時進行的(當CanPauseAndContinue 屬性為true時)
虛方法OnContinue是服務“暫停”後重新啟動時進行的(當CanPauseAndContinue 屬性為true時)
虛方法OnShutdown是計算機系統關閉時發生的(當CanShutdown屬性為true)
虛方法OnPowerEvent是計算機電源狀態更改時執行的(當CanHandlePowerEvent屬性為true)
虛方法OnCustomCommand是服務接到自定義命令時執行的,我在後面提供的代碼中有該方法的實現。
大家只要在自己的代碼中重寫上面的方法即可實現自己的業務邏輯
點每個服務的屬性窗口,會發現有一個“添加安裝程序”的按鈕,它就是vs2003中帶有Windows服務安裝功能
它實際是生成一個安裝類,它繼承了System.Configuration.Install.Installer
編譯後我們得到一exe的程序集
再可使用“.NET 框架 SDK 安裝實用工具”來安裝服務到我們的電腦上
安裝命令:
InstallUtil.exe filename.exe
反安裝命令:
InstallUtil.exe /u filename.exe
服務安裝好以後,我們可以通過windows控制面板裡的服務控制管理器來控制我們的服務運行,當然我們也可以寫代碼來實現控制,這時我們得用到類System.ServiceProcess.ServiceController,該類的使用比較簡單。具體大家可以參考幫助文檔。