<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .Net 平臺下開發Windows服務

        Windows服務是C/S程序另一種表現形式。在.NET開發下的windows服務和系統其他服務表現形式一樣。

        首先介紹開發Windows服務的兩個重要的類window服務類(假稱A類)和添加安裝程序類(假稱B類)。在B類中有兩個組件serviceInstaller1、serviceProcessInstaller1。他們分別是System.ServiceProcess.ServiceInstaller、System.ServiceProcess.ServiceProcessInstaller的對象。那么他們兩有什么區別嗎?MSDN給出的解釋如下:

        ServiceProcessInstaller:安裝一個可執行文件,該文件包含擴展 ServiceBase 的類。該類由安裝實用工具(如 InstallUtil.exe)在安裝服務應用程序時調用。ServiceProcessInstaller 執行可執行文件中的所有服務的公共操作。安裝實用工具使用它來寫與要安裝服務關聯的注冊表值。

      若要安裝服務,請創建一個從 Installer 繼承的項目安裝程序類,然后將該類上的 RunInstallerAttribute 設置為 true。在項目中,為每個服務應用程序實例化一個 ServiceProcessInstaller 實例,并為應用程序中的每個服務實例化一個ServiceInstaller 實例。最后,向項目安裝程序類添加 ServiceProcessInstaller 實例和 ServiceInstaller 實例。

      當 InstallUtil.exe 運行時,該實用工具在服務程序集內查找 RunInstallerAttribute 設置為 true 的類。通過將類添加到與項目安裝程序關聯的 Installers 集合來向服務程序集添加類。如果 RunInstallerAttribute 為 false,安裝實用工具將忽略項目安裝程序。

      對于 ServiceProcessInstaller 實例,可修改的屬性包括指定服務應用程序在登錄用戶之外的帳戶下運行。可指定運行該服務所使用的特定UserName 和Password 對,或者可使用Account 指定該服務是在計算機的系統帳戶、本地或網絡服務帳戶還是用戶帳戶下運行。(注意:計算機的“系統”帳戶與“管理員”帳戶不同。)

        ServiceInstaller:安裝一個類,該類擴展 ServiceBase 來實現服務。在安裝服務應用程序時由安裝實用工具調用該類。ServiceInstaller 執行特定于其所關聯服務的操作。它由安裝實用工具用來將與服務關聯的注冊表值寫入 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 注冊表項內的子項。服務由它在該子鍵內的“服務名”(ServiceName) 標識。該子鍵還包含服務所屬的可執行文件或 .dll 的名稱。

        以上至列出簡要介紹,更詳盡的介紹請參見MSDN.

        下面簡要介紹服務的是實現過程。

        一、.NET 2.0平臺上不能直接建立windows服務項目。在.NET 2.0平臺上開發windows服務,需要自己建立工程,然后添加安裝程序(Installer.cs)和window服務(Service.cs)。然后在,安裝程序文件和window服務文件中分別編寫代碼完成。

        環境介紹:.NET2.0 SP2.(我電腦上面不能直接創建,但是我同事電腦能直接創建Windows服務。沒鬧明白這兩個SP2區別在哪。但是他的版本應該比我的高)

        過程如下:

        1.建立項目(我開發的時候直接建立的Winfrom項目),右擊項目,在選擇添加安裝程序(Installer.cs)和window服務(Service.cs)分別添加到項目中。如下圖:

        

        2.在Service.cs中using System.ServiceProcess命名空間。

            ServiceInstaller installer = new ServiceInstaller();
                  //設置服務名稱
                  installer.ServiceName = "TestDemo";

         //設置服務的啟動類型。下面設置的啟動方式為自動啟動
                  installer.StartType = ServiceStartMode.Automatic;

         //設置服務的描述
                  installer.Description = "測試服務";

       

         //申明服務安裝對象(在使用安裝服務工具時,它會被工具調用以完成服務安裝)

                  ServiceProcessInstaller processer = new ServiceProcessInstaller();

         //設置服務的賬戶。下面設置的為本地系統
                  processer.Account = ServiceAccount.LocalSystem;

         //將安裝服務實例與安裝處理對象添加到安裝程序的集合。
                  Installers.Add(installer);
                  Installers.Add(processer);

         3.在以下方法中編寫服務啟動以及服務停止時的代碼

       

             protected override void OnStart(string[] args)
                {
                 
                }

       

                protected override void OnStop()
                {
                }

            4.將program.cs中的入口函數(main函數)中,改為ServiceBase.Run(new Service1())

            5.生成.exe文件

        二、在.NET3.5平臺上開發windows服務可以直接在建立項目上鍵一個window服務項目,里面直接就有了Service.cs文件,用戶可以添加為他添加安裝程序以完成windows服務的開發。

          環境介紹:.NET3.5SP2.

          1.右擊Service1.cs查看設計器。然后在設計器重右擊選擇菜單中的添加安裝程序,系統會為此服務添加安裝程序的文件ProjectInstall .cs(默認名稱,當然你也可以修改)。

          2.同樣的方式查看ProjectInstall .cs中右擊,選擇查看設計器。在他的設計器重默認有兩個文件:ServiceProcessInstaller1和ServiceInstaller1.cs。

          3.設置ServiceProcessInstaller1和ServiceInstaller1.cs的屬性。將ServiceProcessInstaller1的Account設置為LocalSystem.當然你也可以設置為其他的。若你將  其設置為User則你需要在安裝服務的時候設置服務登陸。我例子中 ServiceProcessInstaller1屬性的設置如下圖:

          

          ServiceInstaller1.cs的屬性設置如下圖:

           

          其中他的屬性設置和2.0平臺上的的上述例子的installer屬性設置一樣。只是一個通過屬性設置、一個通過代碼設置。

          3.編寫服務實現的功能。如下為我做的服務測試的功能:每一秒向指定文本將當前時間寫進去。

       

       System.Timers.Timer timer;
              public Service1()
              {
                  InitializeComponent();
                  this.ServiceName = "TestDemo";           
              }

       

              protected override void OnStart(string[] args)
              {
                  timer = new System.Timers.Timer(1000);
                  timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
                  timer.AutoReset = true;
                  try
                  {
                      timer.Start();
                  }
                  catch(ArgumentOutOfRangeException Ex)
                  {
                      throw Ex;
                  }
              }

              protected override void OnStop()
              {
                  timer.Stop();
                  timer = null;
              }

              private void timer_Elapsed(object obj, EventArgs args)
              {
                  using (FileStream fs = new FileStream(@"D:\test.txt", FileMode.Append, FileAccess.Write))
                  {
                      using (StreamWriter sw = new StreamWriter(fs))
                      {
                          sw.WriteLine(DateTime.Now.ToString());
                      }
                  }

              }

        4.編譯項目,生成安裝文件

      三、服務的安裝。

      不管在2.0平臺還是3.5平臺,對windows服務的安裝都是 通過installutil工具完成的。使用方法如下:

      1.打開VS2008下的命令提示。

      2.輸入installutil  D:\Visual2008\WindowsService\WindowsService1\WindowsService1\bin\Release\WindowsService1.exe,即可完成服務的安裝。安裝成功后的命令界面太大這里就不截取了。安裝成功的服務

      可以在計算機的服務中找到。如下如圖:

       

      3》服務的卸載:輸入installutil /u  D:\Visual2008\WindowsService\WindowsService1\WindowsService1\bin\Release\WindowsService1.exe即可完成服務的卸載。若此時服務正在運行中,也可卸載(它會先嘗試關閉服務,然后卸載)。如下圖:

      做完這些后,就可以在D:\test.txt中看到每個一秒的時間記錄。

      就寫到這里了,希望對進行相關開發的朋友們有所幫助!

      注意:使用installutil工具安裝服務時候,如果路徑中存在空格,安裝會報錯。

      posted @ 2010-09-06 13:40  tyb1222  閱讀(5503)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 欧美激情一区二区三区成人| 日韩蜜桃AV无码中文字幕不卡高清一区二区| 国产成人8x视频网站入口| 亚洲日本va午夜中文字幕久久| 国产亚洲精品成人av久| 亚洲一区二区三区在线观看播放| 国产超高清麻豆精品传媒麻豆精品| 无码专区 人妻系列 在线 | 国产精品第一区亚洲精品| 国产成人综合久久精品下载| 奉节县| 丰满人妻熟妇乱又仑精品| 国产精品不卡区一区二| 精品无码一区二区三区在线| 亚洲日本一区二区三区在线播放| 干老熟女干老穴干老女人| 久久久精品2019中文字幕之3| 国产小受被做到哭咬床单GV| 无套内谢少妇一二三四| 国产精品免费中文字幕| 欧洲一区二区中文字幕| 汝阳县| 中文字幕一区二区人妻| 国产高潮刺激叫喊视频| 欧美综合天天夜夜久久| 国产成人精品三上悠亚久久| 99久久国产成人免费网站| 国产精品福利自产拍在线观看| 成年女人片免费视频播放A| 人妻中文字幕亚洲精品| 色噜噜一区二区三区| 亚洲AV天天做在线观看| 精品中文人妻在线不卡| 国产一区二区三区精美视频| 疯狂三人交性欧美| 国产乱色国产精品免费视频 | 免费人成无码大片在线观看| 中文字幕亚洲综合第一页| 国产一区二区不卡91| 天堂亚洲免费视频| 国产午夜福利一区二区三区|