欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用.NET創(chuàng)建Windows服務的方法

 更新時間:2007年03月16日 00:00:00   作者:  

安裝Windows服務

Windows服務不同于普通Windows應用程序。不可能簡簡單單地通過運行一個EXE就啟動Windows服務了。安裝一個Windows服務應該通過使用.NET Framework提供的InstallUtil.exe來完成,或者通過諸如一個Microsoft Installer (MSI)這樣的文件部署項目完成。


添加服務安裝程序

創(chuàng)建一個Windows服務,僅用InstallUtil程序去安裝這個服務是不夠的。你必須還要把一個服務安裝程序添加到你的Windows服務當中,這樣便于InstallUtil或是任何別的安裝程序知道應用你服務的是怎樣的配置設置。

1. 將這個服務程序切換到設計視圖
2. 右擊設計視圖選擇“添加安裝程序”
3. 切換到剛被添加的ProjectInstaller的設計視圖
4. 設置serviceInstaller1組件的屬性:
    1) ServiceName = My Sample Service
    2) StartType = Automatic
5. 設置serviceProcessInstaller1組件的屬性
    1) Account = LocalSystem
6. 生成解決方案

在完成上面的幾個步驟之后,會自動由Visual Studio產生下面的源代碼,它包含于ProjectInstaller.cs這個源文件內。

using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;

namespace CodeGuru.MyWindowsService
{
  /// <summary>
  /// Summary description for ProjectInstaller.
  /// </summary>
  [RunInstaller(true)]
  public class ProjectInstaller :
System.Configuration.Install.Installer
  {
   private System.ServiceProcess.ServiceProcessInstaller
serviceProcessInstaller1;
   private System.ServiceProcess.ServiceInstaller serviceInstaller1;
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ComponentModel.Container components = null;

   public ProjectInstaller()
   {
     // This call is required by the Designer.
     InitializeComponent();

     // TODO: Add any initialization after the InitComponent call
   }

   #region Component Designer generated code
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {
     this.serviceProcessInstaller1 = new
System.ServiceProcess.ServiceProcessInstaller();
     this.serviceInstaller1 = new
System.ServiceProcess.ServiceInstaller();
     //
     // serviceProcessInstaller1
     //
     this.serviceProcessInstaller1.Account =
System.ServiceProcess.ServiceAccount.LocalSystem;
     this.serviceProcessInstaller1.Password = null;
     this.serviceProcessInstaller1.Username = null;
     //
     // serviceInstaller1
     //
     this.serviceInstaller1.ServiceName = "My Sample Service";
     this.serviceInstaller1.StartType =
System.ServiceProcess.ServiceStartMode.Automatic;
     //
     // ProjectInstaller
     //
     this.Installers.AddRange(new
System.Configuration.Install.Installer[]
{this.serviceProcessInstaller1, this.serviceInstaller1});
}
   #endregion
  }
}


用InstallUtil安裝Windows服務

現(xiàn)在這個服務已經生成,你需要把它安裝好才能使用。下面操作會指導你安裝你的新服務。

1. 打開Visual Studio .NET命令提示
2. 改變路徑到你項目所在的bin\Debug文件夾位置(如果你以Release模式編譯則在bin\Release文件夾)
3. 執(zhí)行命令“InstallUtil.exe MyWindowsService.exe”注冊這個服務,使它建立一個合適的注冊項。
4. 右擊桌面上“我的電腦”,選擇“管理”就可以打計算機管理控制臺
5. 在“服務和應用程序”里面的“服務”部分里,你可以發(fā)現(xiàn)你的Windows服務已經包含在服務列表當中了
6. 右擊你的服務選擇啟動就可以啟動你的服務了

在每次需要修改Windows服務時,這就會要求你卸載和重新安裝這個服務。不過要注意在卸載這個服務前,最好確保服務管理控制臺已經關閉,這會是一個很好的習慣。如果沒有這樣操作的話,你可能在卸載和重安裝Windows服務時會遇到麻煩。僅卸載服務的話,可以執(zhí)行相的InstallUtil命令用于注銷服務,不過要在后面加一個/u命令開關。


調試Windows服務

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


附加正在運行的Windows服務

為了調試程序,有些附加Windows服務的操作說明。這些操作假定你已經安裝了這個Windows服務并且它正在運行。

1. 用Visual Studio裝載這個項目
2. 點擊“調試”菜單
3. 點擊“進程”菜單
4. 確保 顯示系統(tǒng)進程 被選
5. 在 可用進程 列表中,把進程定位于你的可執(zhí)行文件名稱上點擊選中它
6. 點擊 附加 按鈕
7. 點擊 確定
8. 點擊 關閉
9. 在timer1_Elapsed方法里設置一個斷點,然后等它執(zhí)行


總結

現(xiàn)在你應該對Windows服務是什么,以及如何創(chuàng)建、安裝和調試它們有一個粗略的認識了。Windows服務的額處的功能你可以自行研究。這些功能包括暫停(OnPause)和恢復(OnContinue)的能力。暫停和恢復的能力在默認情況下沒有被啟用,要通過Windows服務屬性來設置。


About the Author
Mark Strawmyer, MCSD, MCSE (NT4/W2K), MCDBA is a Senior Architect of .NET applications for large and mid-size organizations. Mark is a technology leader with Crowe Chizek in Indianapolis, Indiana. He specializes in architecture, design and development of Microsoft-based solutions. You can reach Mark at mstrawmyer@crowechizek.com

相關文章

  • Entity?Framework使用ObjectContext類

    Entity?Framework使用ObjectContext類

    這篇文章介紹了Entity?Framework使用ObjectContext類的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • unity實現(xiàn)文字滾動效果

    unity實現(xiàn)文字滾動效果

    這篇文章主要為大家詳細介紹了unity實現(xiàn)文字滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 輕松學習C#的ArrayList類

    輕松學習C#的ArrayList類

    輕松學習C#的ArrayList類,對C#的ArrayList類感興趣的朋友可以參考本篇文章,幫助大家更靈活的運用C#的ArrayList類
    2015-11-11
  • C# 實現(xiàn)Trim方法去除字符串前后的所有空格

    C# 實現(xiàn)Trim方法去除字符串前后的所有空格

    這篇文章主要介紹了C# 實現(xiàn)Trim方法去除字符串前后的所有空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • unity scrollRect實現(xiàn)按頁碼翻頁效果

    unity scrollRect實現(xiàn)按頁碼翻頁效果

    這篇文章主要為大家詳細介紹了unity scrollRect實現(xiàn)按頁碼翻頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#中comboBox實現(xiàn)三級聯(lián)動

    C#中comboBox實現(xiàn)三級聯(lián)動

    給大家分享了C#中comboBox實現(xiàn)三級聯(lián)動的全部代碼,代碼經過測試,有興趣的朋友跟著做一下。
    2018-03-03
  • C#多線程之線程池ThreadPool用法

    C#多線程之線程池ThreadPool用法

    這篇文章介紹了C#多線程之線程池ThreadPool的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C#中StringBuilder用法以及和String的區(qū)別分析

    C#中StringBuilder用法以及和String的區(qū)別分析

    當我們在初學使用C#時,常常會不知道該用StringBuilder合適還是用String高效,下面是我在學習當中對StringBuilder和String的區(qū)別總結,分享給大家。
    2013-03-03
  • C#對DataTable中的某列進行分組

    C#對DataTable中的某列進行分組

    這篇文章介紹了C#對DataTable某列進行分組的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • .NET?MemoryCache如何清除全部緩存

    .NET?MemoryCache如何清除全部緩存

    本文主要介紹了.NET?MemoryCache如何清除全部緩存,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論