C# VS 2010建立、安裝、調試 windows服務(windows service)

來源:互聯網
上載者:User

標籤:des   class   c   tar   http   a   

在一個應用程式中建立多個 windows 服務的方法和 1083 的解決辦法 錯誤解決方案

--------------------------------------------------------------------------------------

1.建立 windows服務 項目   檔案 -> 建立項目 -> 已安裝的模板 -> Visual C# -> windows ,在右側視窗選擇"windows 服務"

2.系統已經為我們建立了一個 Service1.cs 組件,測試時我們就用它了. 如果要新件的話,右鍵項目 -> 添加 -> 建立項 -> windows 服務。

3.在 Service1.cs 上 ,按 F7 (右鍵查看代碼),開啟字碼頁。加入我們測試用的代碼。   注意:下面的幾個方法中的 str 變數,為了我們一會兒調試時設定斷點用的!

using System;

using System.Diagnostics;

using System.ServiceProcess;

namespace WindowsService1

{

  public partial class Service1 : ServiceBase

  {

   public Service1()

   {

    InitializeComponent();

    InitService();

   }

   /// <summary>    /// 初始化服務參數    /// </summary>

   private void InitService()

   {

    base.AutoLog = false;

    base.CanShutdown = true;

    base.CanStop = true;

    base.CanPauseAndContinue = true;

    base.ServiceName = "Service1";  //這個名字很重要,設定不一致會產生 1083 錯誤哦!

   }

   protected override void OnStart(string[] args)

   {     string str ="服務開啟";    }

   protected override void OnStop()

   {     string str ="服務停止";    }

   protected override void OnContinue()

   {     string str ="服務繼續運行";     base.OnContinue();    }

   protected override void OnPause()    {     string str ="服務暫停";     base.OnPause();    }   } }

4.建立服務的“安裝程式” 4.1 雙擊”Service1.cs“,開啟 Service1.cs 的視圖設計器

4.2 在視圖設計器中任意位置右鍵,選擇”添加安裝程式“

4.3 這時項目跟目下將出現一個 ProjectInstaller.cs 的組件     (如果是第一次添加”安裝程式“的話)

4.4 雙擊 ProjectInstaller.cs 開啟 ProjectInstaller  的視圖設計器

4.5 找到 serviceInstaller1 組件,選中後按 F4 鍵,設定組件屬性。   Description=“測試服務1”;   DisplayName=“Service1”;   ServiceName=“Service1”;//這個值必須和 WindowsService1.InitService() 方法下設定的 base.ServiceName 屬性一至。   StartType 為服務運行類型,根據你的需要設定即可。(Manual:手動啟動,AutoMatic 為自動啟動)

4.6 找到 serviceProcessInstaller1 組件,選中後按 F4 鍵,設定組件屬性。   Account=“LocalSystem”; //設定為其他的屬性在開啟服務時,會提示輸入使用者名稱和密碼

4.7 這樣就完成了一個服務的所有準備,下面就是安裝和測試工作。

5.產生組件 右鍵項目,選擇“產生”。

6.安裝組件

6.1 使用 InstallUtil.exe 工具註冊元件服務,檔案位置在不同版本的 framework 中。我用的是 4.0 所以在一下位置 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

6.2 開啟組建目錄,如果產生成功會有一個 WindowsService1.exe 檔

6.3 在組建目錄根目錄下新加兩個 bat(批次檔),用於安裝和卸載服務   建立一個文字檔,開啟檔案加入以下兩行命令   C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe WindowsService1.exe   pause   儲存後關閉文字檔,之後將其重新命名為“安裝服務.bat”檔案,注意要修改尾碼名為 .bat!

  再建立一個文字檔,開啟檔案加入以下兩行命令   C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u WindowsService1.exe   pause   儲存後關閉文字檔,之後將其重新命名為“卸載服務.bat”檔案,注意要修改尾碼名為 .bat!

6.4 “安裝服務.bat”檔案,安裝windows 服務

7.安裝成功後需要手動開啟服務,因為我們剛設定 serviceInstaller1.StartType 為 Manual 開啟windows 服務管理員,找到名為 Service1 的服務,右鍵屬性。點擊【啟動】按鈕

8.windows 調試

8.1 回到開發環境,選擇調試->附加到進程,勾選”顯示所有使用者進程“

8.2 找到 WindowsService1.exe 進程(如果沒有點擊下重新整理按鈕),選中後點擊“附加到進程”按鈕。

8.3 選中 Service1.cs 檔案,後按 F7 開啟程式碼檢視

8.4 在所有 str 變數上添加調試斷點 8.5 回到windows服務管理員,找 Service1 服務並選中它,在左側有一個“暫停”按鈕。點擊一下   這時,OnPause 方法下的斷點命中!OK 達到了調試的目的了

9.如果想一次安裝多個服務,需要按照 2~5 的步驟多添加幾個服務就好了!

--------------------------------------------------------------------------------------

問題及解決方案 註冊成功後,啟動 Windows服務 時遇到錯誤:1083 的解決辦法

1.查看 Main() 方法中是否啟動了指定的服務

ServiceBase[] ServicesToRun;

ServicesToRun = new ServiceBase[]

{   new Service1(),   new Service2() //如果建立多個服務需要添加這段代碼 };

ServiceBase.Run(ServicesToRun);

2.確保 ProjectInstaller.cs 視圖設計器中的 serviceInstaller1 組件的 ServiceName 屬性   與 Service1.cs 組件的 ServiceName 屬性一致

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.