客戶端軟件還能設置服務監視的目錄,系統設置對話框為
軟件設計
命令行參數設計
一般而言,我們將服務和客戶端分成兩個 C#工程開發,但這裡為了方便我們只在一個工程中實現服務器和客戶端軟件的開發。Windows 服務是不能顯示圖形化用戶界面的,但並不是說Windows服務的軟件中不能包含顯示圖形化用 戶界面的軟件模塊。我們完全可以編寫一個EXE,其中包含服務器和客戶端兩個相互獨立的軟 件模塊。直接執行EXE將以服務模式運行,若帶有命令行參數將以客戶端模式運行。為此我們 設計了如下的命令行參數
命令行參數
功能
無任何參數
以服務模式運行,調用ServiceBase.Run函數來運行服務。
/install
調用InstallUtil.exe安裝服務,將EXE自己注冊到Windows服務管理器中。
/uninstall
調用InstallUtil.exe卸載服務。
/clIEnt
以客戶端模式運行,顯示圖形用戶界面。
/debug
以調試模式下運行,方便VS.Net對服務的操作過程提供調試。
使用VS.NET調 試服務是一個比較麻煩的事,首先我們得安裝並運行服務,然後使用VS.NET的菜單項目 “工具-附加到進程”的操作來附加到服務程序,然後設置斷點進行調試,其中 OnStart函數是沒有辦法設置斷點調試的。為此我們專門添加一個“/debug”命令 行參數使得程序不進入服務模式,而是直接運行提供服務內容的功能性代碼,然後主線程休 眠,但功能性代碼還在運行,可以調試。這樣我們在VS.Net中設置斷點後可以直接運行進行 調試了。
這裡我們設計的C#工程名稱為MyWindowsService,編譯生成的文件為 MyWindowsService.exe。