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

C#實現(xiàn)Windows服務(wù)測試與調(diào)試

 更新時間:2022年02月24日 16:39:00   作者:.NET開發(fā)菜鳥  
這篇文章介紹了C#實現(xiàn)Windows服務(wù)測試與調(diào)試的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、測試Windows服務(wù)

為了使Windows服務(wù)程序能夠正常運行,我們需要像創(chuàng)建一般應(yīng)用程序那樣為它創(chuàng)建一個程序的入口點。像其他應(yīng)用程序一樣,Windows服務(wù)也是在Program.cs的Main()函數(shù)中完成這個操作。首先我們在Main()函數(shù)中創(chuàng)建一個Windows服務(wù)的實例,該實例應(yīng)該是ServiceBase類的某個子類的對象,然后我們調(diào)用由基類ServiceBase類定義的一個Run()方法。然而調(diào)用Run()方法并不意味著就開始了Windows服務(wù)程序,必須要等到該對象的OnStart()方法被調(diào)用時服務(wù)才算真正開始運行。如果你想在一個Windows服務(wù)程序中同時啟動多個服務(wù),那么只要在Main()函數(shù)中定義多個ServiceBase類的子類的實例對象就可以了,方法就是創(chuàng)建一個ServiceBase類的數(shù)組對象。

 namespace WindowsServiceDemo
 {
     static class Program
     {
         /// <summary>
         /// 應(yīng)用程序的主入口點。
         /// </summary>
         static void Main()
         {
             ServiceBase[] ServicesToRun;
             ServicesToRun = new ServiceBase[] 
             { 
                 //服務(wù)1
                 new MyService(), 
                 //服務(wù)2
                 new Service1()
             };
             ServiceBase.Run(ServicesToRun);
         }
     }
 }

由于Windows服務(wù)沒有直接的用戶交互,服務(wù)的狀態(tài)必須通過記錄日志才可知曉。要測試windows服務(wù),可以通過重寫服務(wù)里面的方法,在方法里面記錄日志來實現(xiàn)。

1、新建Common類,類里面有一個WriteLog記錄日志的方法。日志路徑寫在配置文件里面,可以實現(xiàn)項目的靈活性。

 namespace WindowsServiceDemo
 {
     public class Common
     {
         /// <summary>
         /// 記錄日志
         /// </summary>
         /// <param name="strInfo"></param>
         public static void WriteLog(string strInfo)
         {
             string strPath=ConfigurationManager.AppSettings["FilePath"];
             using (StreamWriter sw = new StreamWriter(strPath, true))
             {
                 sw.WriteLine(strInfo + ",當(dāng)前時間:" + DateTime.Now.ToString());
                 sw.Close();
             }
             
         }
     }
 }

2、在Service1的設(shè)計界面點右鍵-->查看代碼,打開Service1的代碼,分別重寫OnStart()、OnStop()、OnPause()、OnContinue()方法,在方法里面調(diào)用Common類的WriteLog方法來記錄服務(wù)的運行狀態(tài)。

 namespace WindowsServiceDemo
 {
     public partial class MyService : ServiceBase
     {
         public MyService()
         {
             InitializeComponent();
         }
 
         /// <summary>
         /// 服務(wù)啟動時執(zhí)行的代碼
         /// </summary>
         /// <param name="args"></param>
         protected override void OnStart(string[] args)
         {
             try
             {
                 Common.WriteLog("服務(wù)啟動");
             }
             catch (Exception ex)
             {
                 Common.WriteLog("服務(wù)啟動出錯:"+ex.Message);
             }
         }
 
         /// <summary>
         /// 服務(wù)停止時執(zhí)行的代碼
         /// </summary>
         protected override void OnStop()
         {
             try
             {
                 Common.WriteLog("服務(wù)停止");
             }
             catch (Exception ex)
             {
                 
                 Common.WriteLog("服務(wù)停止出錯:"+ex.Message);
             }
         }
 
         /// <summary>
         /// 服務(wù)暫停時執(zhí)行的代碼
         /// </summary>
         protected override void OnPause()
         {
             try
             {
                 Common.WriteLog("服務(wù)暫停");
             }
             catch (Exception ex)
             {
                 
                  Common.WriteLog("服務(wù)暫停出錯:"+ex.Message);
             }
         }
 
         /// <summary>
         /// 服務(wù)恢復(fù)時執(zhí)行的代碼
         /// </summary>
         protected override void OnContinue()
         {
             try
             {
                 Common.WriteLog("服務(wù)恢復(fù)");
             }
             catch (Exception ex)
             {
                 
                  Common.WriteLog("服務(wù)恢復(fù)出錯:"+ex.Message);
             }
         }
 
     }
 }

3、在服務(wù)控制管理器里面分別啟動、暫停、恢復(fù)、停止服務(wù),查看生成的日志:

日志里面正確記錄了服務(wù)的運行狀態(tài),證明服務(wù)沒有問題。

二、調(diào)試Windows服務(wù)

 調(diào)試Windows服務(wù),可以采用將服務(wù)附加到進(jìn)程的方法。

1、在菜單欄選項里面選擇調(diào)試-->附加到進(jìn)程

2、在附加到進(jìn)程界面,選擇相應(yīng)的服務(wù)進(jìn)程,點擊附加。

注意:要把服務(wù)附加到進(jìn)程,必須保證服務(wù)是啟動狀態(tài),否則在進(jìn)程里面看不到服務(wù)的進(jìn)程。

三、總結(jié):

  • 1、Windows服務(wù)調(diào)試不能直接F5,可以通過附加到進(jìn)程方式調(diào)試(調(diào)試前提:將服務(wù)啟動、以管理員身份運行VS)
  • 2、Windows服務(wù)由于沒有直接的用戶交互,服務(wù)的狀態(tài)必須通過日志才可知曉,恰當(dāng)?shù)募尤雝ry catch
  • 3、所有可能發(fā)生變化的內(nèi)容都不要寫死,盡量通過配置文件來實現(xiàn),這是項目靈活性的重要指標(biāo)
  • 4、Windows服務(wù)多用于定時操作、大數(shù)據(jù)量操作、監(jiān)控操作等方面

到此這篇關(guān)于C#實現(xiàn)Windows服務(wù)測試與調(diào)試的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#使用文件流讀取文件的方法

    C#使用文件流讀取文件的方法

    這篇文章主要介紹了C#使用文件流讀取文件的方法,涉及C#中FileInfo類操作文件的技巧,需要的朋友可以參考下
    2015-04-04
  • Unity實現(xiàn)弧形移動效果

    Unity實現(xiàn)弧形移動效果

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)弧形移動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C#權(quán)限管理和設(shè)計淺談

    C#權(quán)限管理和設(shè)計淺談

    權(quán)限管理是很多軟件中相當(dāng)重要的一個模塊——它的設(shè)計的好壞直接影響到軟件的安全性、權(quán)限管理的可擴(kuò)展性和易操作性 以及代碼中權(quán)限判斷的復(fù)雜程度和效率等方面
    2012-02-02
  • C#編寫發(fā)送郵件組件

    C#編寫發(fā)送郵件組件

    本文給大家分享的是使用C#編寫的發(fā)送郵件的組件,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06
  • C#基礎(chǔ)知識之GetType與typeof的區(qū)別小結(jié)

    C#基礎(chǔ)知識之GetType與typeof的區(qū)別小結(jié)

    在比較對象時,需要了解他們的類型,才能決定他們的值是否能比較。所有的類都從System.Object中繼承了GetType()方法,常常與typeo()運算符一起使用。這篇文章主要給大家介紹了關(guān)于C#基礎(chǔ)知識之GetType與typeof區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • C#動態(tài)生成按鈕及定義按鈕事件的方法

    C#動態(tài)生成按鈕及定義按鈕事件的方法

    這篇文章主要介紹了C#動態(tài)生成按鈕及定義按鈕事件的方法,涉及C#按鈕操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • c#與js隨機(jī)數(shù)生成方法

    c#與js隨機(jī)數(shù)生成方法

    這篇文章主要介紹了c#與js隨機(jī)數(shù)生成方法,實例分析了C#與js生成隨機(jī)數(shù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • C#連接mysql數(shù)據(jù)庫完整實例

    C#連接mysql數(shù)據(jù)庫完整實例

    這篇文章主要介紹了C#連接mysql數(shù)據(jù)庫的方法,以一個完整實例形式分析了C#操作mysql數(shù)據(jù)庫連接的基本技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • C#使用Npoi導(dǎo)出Excel并合并行列

    C#使用Npoi導(dǎo)出Excel并合并行列

    這篇文章主要為大家詳細(xì)介紹了C#使用Npoi導(dǎo)出Excel并合并行列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解C# List<T>的Contains,Exists,Any,Where性能對比

    詳解C# List<T>的Contains,Exists,Any,Where性能對比

    這篇文章主要介紹了詳解C# List<T>的Contains,Exists,Any,Where性能對比,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論