用C#創建Windows服務(Windows Services)

 

用C#創建Windows服務(Windows Services)

Windows服務在Visual Studio 以前的版本中叫NT服務,在VS.net啓用了新的名稱。用Visual C# 創建Windows服務不是一件困難的事,本文就將指導你一步一步創建一個Windows服務並使用它。這個服務在啓動和停止時,向一個文本文件中寫入一些文字信息。

 第一步:創建服務框架
要創建一個新的 Windows 服務,可以從Visual C# 工程中選取 Windows 服務(Windows Service)選項,給工程一個新文件名,然後點擊 確定。

你可以看到,嚮導向工程文件中增加WebService1.cs類:

其中各屬性的含意是:

ü         Autolog                 是否自動寫入系統的日誌文件

ü         CanHandlePowerEvent     服務時候接受電源事件

ü         CanPauseAndContinue          服務是否接受暫停或繼續運行的請求

ü         CanShutdown 服務是否在運行它的計算機關閉時收到通知,以便能夠調用 OnShutDown 過程

ü         CanStop                              服務是否接受停止運行的請求

ü         ServiceName                       服務名

 

第二步:向服務中增加功能
在 .cs代碼文件中我們可以看到,有兩個被忽略的函數 OnStart和OnStop。

OnStart函數在啓動服務時執行,OnStop函數在停止服務時執行。在這裏,當啓動和停止服務時,向一個文本文件中寫入一些文字信息,代碼如下:

protected override void OnStart(string[] args)

{

 FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine("mcWindowsService:         Service Started"+DateTime.Now.ToString()+"\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

 

}

 

protected override void OnStop()

{

FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

m_streamWriter.WriteLine(" mcWindowsService: Service Stopped "+DateTime.Now.ToString()+"\n");

m_streamWriter.Flush();

m_streamWriter.Close();

fs.Close();

}

 第三步: 將安裝程序添加到服務應用程序

 Visual Studio.NET 隨附有安裝組件,可用來安裝與服務應用程序相關聯的資源。安裝組件在正在安裝到的系統上註冊一項單個的服務,並使服務控制管理器知道該服務的存在。

要正確安裝服務,並不需要在安裝程序中進行任何特殊編碼。但是,如果需要向安裝進程添加特殊功能,則可能偶爾需要修改安裝程序的內容。

       將安裝程序添加到服務應用程序的步驟是:

1:在解決方案中,訪問要向其中添加安裝組件的服務的Design視圖。

2:在屬性窗口中,單擊添加安裝程序鏈接

這時項目中就添加了一個新類 ProjectInstaller 和兩個安裝組件 ServiceProcessInstaller 和 ServiceInstaller,並且服務的屬性值被複制到組件。

3:若要確定如何啓動服務,請單擊 ServiceInstaller 組件並將 StartType 屬性設置爲適當的值。

ü         Manual      服務安裝後,必須手動啓動。

ü         Automatic    每次計算機重新啓動時,服務都會自動啓動。

ü         Disabled     服務無法啓動。

4:將serviceProcessInstaller類的Account屬性改爲 LocalSystem

     這樣,不論是以哪個用戶登錄的系統,服務總會啓動。

 

第四步:生成服務程序

通過從生成菜單中選擇生成來生成項目。

注意   不要通過按 F5 鍵來運行項目——不能以這種方式運行服務項目。

 

第五步:打包服務

點擊“文件”-<“添加”-<“新建項目”

選擇“其他項目類型”-<“安裝和部署”裏的“安裝項目”

建好項目後,右鍵剛纔新建的安裝項目,選擇“視圖”-<“文件系統”

打開了文件系統屬性。可以看到,屏幕左邊,出現了三項文件系統的內容,因爲我們是Windows服務程序,不需要在開始菜單和桌面上放置圖標,所以我們直接右鍵“應用程序文件夾”-<“添加”-<“項目輸出”

在出來的對話框中,選擇“主輸出”和“Release XXX”,這個由你的項目屬性決定,一般選擇Release Any CPU。

右鍵剛纔新建的安裝項目,選擇“視圖”-<“添加自定義操作”

在打開的自定義操作界面中,右鍵最上面的“自定義操作”-<“添加自定義操作”

在打開的選擇項目中選擇“應用程序文件夾”-<“主輸出來自。。。”

保存-<生成

發佈了13 篇原創文章 · 獲贊 15 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章