用.Net開發Windows服務初探

來源:互聯網
上載者:User

1 什麼是Windows服務
        Windows服務應用程式是一種需要長期啟動並執行應用程式,它對於伺服器環境特別適合。它沒有使用者介面,並且也不會產生任何可視輸出。任何使用者訊息都會被寫進Windows事件記錄。電腦啟動時,服務會自動開始運行。它們不要使用者一定登入才運行,它們能在包括這個系統內的任何使用者環境下運行。通過服務控制管理員,Windows服務是可控的,可以終止、暫停及當需要時啟動。

2 建立一個Windows服務
        我們即將建立的這個服務是用來監視檔案是否被改動的,只要指定的目錄下的檔案被改動,都會記入日誌的。下面就讓我們來建立這個Windows服務。

        Visual Studio .NET能夠使建立一個Windows服務變成相當簡單的一件事情。(1)開啟Visual Studio.net
(2)建立一個Windows服務項目,選取“Visual C#”項目,然後在選取Windows服務範本
(3)將項目名稱設定為WatchFileService單擊確定
(4)將Service1.cs重新命名為WatchFile.cs
(5)轉到WatchFile.cs的設計畫面,設定屬性視窗中的ServiceName屬性為WatchFileService,並從工具——〉組件中拖放FileSystemWatcher和EventLog到設計畫面,拖放後的結果,
               

(6)設定fileSystemWatcher1的Filter屬性為*.txt,Path屬性為c:\temp
(7)設定eventLog1的source屬性為fileSystem-Watcher1
(8)雙擊fileSystemWatcher1,添加如下代碼:

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
    eventLog1.WriteEntry(e.Name + " 這個檔案在:"+DateTime.Now.ToString() + “ 被改動了!”);
}

3 使用Installer類
(1)將WatchFile.cs切換到設計畫面,在WatchFile的屬性視窗下方按下“添加安裝程式”選項。VS.net會自動添加一個ProjectInstaller.cs檔案,這個檔案的設計畫麵包含兩個控制項——serviceProcessInstaller1和serviceInstaller1,畫面
              

(2)設定serviceProcessInstaller1控制項的Account屬性為“LocalSystem”
(3)編譯這個項目,可以在項目的bin\debug目錄下找到WatchFileService.exe的檔案

3 安裝Windows 服務
(1)進入命令提示字元模式,開始菜單——〉程式——〉Micosoft Visual Sdudio.net2003——〉Visual Sdudio.net工具——〉Visual Sdudio.net 2003命令提示
(2)在命令提示下進入專案檔夾\bin\debug目錄
(3)輸入installutil WatchFileService.exe,安裝服務成功,結果 
       

(4)若要刪除這個服務,則輸入installutil /u WatchFileService.exe

4 設定服務為自動啟動
        將ProjectInstaller.cs轉到設計狀態,修改serviceInstaller1組件的StartType屬性為Automatic,這樣服務安裝後,當作業系統重新啟動後,服務就會自動啟動。

5 調試Windows服務
        從另外的角度度看,調試Windows服務絕不同於一個普通的應用程式。調試Windows服務需求的步驟更多。服務不能象你對普通應用程式做的那樣,只要簡單地在開發環境下執行就可以調試了。服務必須首先被安裝和啟動,這一點在前面部分我們已經做到了。為了便於跟蹤調試代碼,一旦服務被啟動,你就要用Visual Studio把啟動並執行進程附加進來(attach)。記住,對你的Windows服務做的任何修改都要對這個服務進行卸載和重安裝。

6 附加正在啟動並執行Windows服務
        為了偵錯工具,有些附加Windows服務的操作說明。這些操作假定你已經安裝了這個Windows服務並且它正在運行。

(1)用Visual Studio裝載這個項目
(2)點擊“調試”菜單
(3)點擊“進程”菜單
(4)確保 顯示系統進程 被選
(5)在 可用進程 列表中,把進程定位於你的可執行檔名稱上點擊選中它
(6)點擊 附加 按鈕
(7)點擊 確定
(8)點擊 關閉
(9)在fileSystemWatcher1_Changed方法裡設定一個斷點,然後等它執行

7 效果
(1)在c:\temp目錄下建立一個文字檔,並編輯該檔案
(2)開啟事件檢視器工具中的應用程式記錄檔,可以看到有記錄項目產生,
               

posted on 2005-08-12 15:43 振河 閱讀(1266) 評論(12)  編輯 收藏 收藏至365Key 所屬分類: Web and Windows Service
評論:

# re: 用.Net開發Windows服務初探 2005-08-12 16:29 | 木野狐你和我在做類似的事情,我碰到的問題是,我搭配了 log4net 做日誌。如果寫正常的 exe 的時候,都是好好的。但是一寫成服務了,日誌就沒反映。
希望能夠多交流。要不你也試試如何在服務裡用 log4net,非常感謝。
  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.