熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用C#做Windows Services

2013-11-13 10:31:13  來源: .NET編程 

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

  第一步創建服務框架

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

  你可以看到向導向工程文件中增加Servicecs類

  其中各屬性的含意是:

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

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

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

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

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

  ü         ServiceName                       服務名

  第二步向服務中增加功能

  在 cs代碼文件中我們可以看到有兩個被忽略的函數 OnStart和OnStop

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

  protected override void OnStart(string[] args)

  {

  FileStream fs = new FileStream(@d:\mcWindowsServicetxt FileModeOpenOrCreate FileAccessWrite);

  StreamWriter m_streamWriter = new StreamWriter(fs);

  m_streamWriterBaseStreamSeek( SeekOriginEnd);

  m_streamWriterWriteLine(mcWindowsService:         Service Started+DateTimeNowToString()+\n);

  m_streamWriterFlush();

  m_streamWriterClose();

  fsClose();

  }

  protected override void OnStop()

  {

  FileStream fs = new FileStream(@d:\mcWindowsServicetxt FileModeOpenOrCreate FileAccessWrite);

  StreamWriter m_streamWriter = new StreamWriter(fs);

  m_streamWriterBaseStreamSeek( SeekOriginEnd);

  m_streamWriterWriteLine( mcWindowsService: Service Stopped +DateTimeNowToString()+\n);

  m_streamWriterFlush();

  m_streamWriterClose();

  fsClose();

  }

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

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

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

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

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

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

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

  若要確定如何啟動服務請單擊 ServiceInstaller 組件並將 StartType 屬性設置為適當的值

  ü         Manual      服務安裝後必須手動啟動

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

  ü         Disabled     服務無法啟動

  將serviceProcessInstaller類的Account屬性改為 LocalSystem

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

  第四步生成服務程序

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

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

  第五步安裝服務

  訪問項目中的已編譯可執行文件所在的目錄

  用項目的輸出作為參數從命令行運行 InstallUtilexe在命令行中輸入下列代碼

  installutil yourprojectexe

  卸載服務

  用項目的輸出作為參數從命令行運行 InstallUtilexe

  installutil /u yourprojectexe


From:http://tw.wingwit.com/Article/program/net/201311/13879.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.