[C#]使用Console(控制台)調試 Windows 服務


  介紹  

      Windows服務應用程序是一種需要長期運行的應用程序,它對於服務器環境特別適合。它沒有用戶界面,並且也不會產生任何可視輸出。任何用戶消息都會被寫進Windows事件日志。計算機啟動時,服務會自動開始運行。它們不要用戶一定登錄才運行,它們能在包括這個系統內的任何用戶環境下運行。通過服務控制管理器,Windows服務是可控的,可以終止、暫停及當需要時啟動。

      這里我就不演示如何創建一個Windows服務了,通常我們在寫windows服務的時候遇到的最大問題就是如何調試Windows服務,最常用的方式是附加到進程,可這種方式不方便的地方是每次都要附加,非常麻煩,所以我推薦下面一種方式,用控制台來調試Windows服務,具體操作起來也非常簡單。

 

  正文  

      首先將項目設置為,控制台應用程序,點擊項目屬性,將輸出類型設置為“控制台應用程序”,如下圖。

        接下來,把一下這段代碼,主要建立控制台調用的啟動和停止服務的方法,復制到Service.cs (就是你自己建的Service中)。

 

        #if DEBUG
        /// <summary>
        /// 調試用
        /// </summary>
        /// <param name="args"></param>
        public void Start(string[] args)
        {
            this.OnStart(args);
        }
        public void Stop()
        {
            this.OnStop();
        }
        #endif

 

      下一步,把下面這段代碼復制到解決方案根目錄下的,Programs中。

            #if DEBUG
            string[] args = new string[] { " " };
            SubscribeService x = new SubscribeService(); //這里要替換成你自己服務的名稱
            if (args.Length > 0)
            {
                Console.WriteLine("==========開始使用控制台調試Windows服務==========");
                x.Start(args);
                Console.ReadLine();
            }
            else
            {
                System.ServiceProcess.ServiceBase[] ServicesToRunTemp;                ServicesToRunTemp = new System.ServiceProcess.ServiceBase[] { x };
                System.ServiceProcess.ServiceBase.Run(ServicesToRunTemp);
            }
            #endif

      大功告成,現在就可以把Windows服務當成一個控制台程序來調試了,當然在發布服務的時候還是要把輸出類型改回來的。

  

作者: 布魯斯張
出處: http://www.cnblogs.com/brucezhang80/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM