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

  介紹  git

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

      這裏我就不演示如何建立一個Windows服務了,一般咱們在寫windows服務的時候遇到的最大問題就是如何調試Windows服務,最經常使用的方式是附加到進程,可這種方式不方便的地方是每次都要附加,很是麻煩,因此我推薦下面一種方式,用控制檯來調試Windows服務,具體操做起來也很是簡單。windows

 

  正文  服務器

      首先將項目設置爲,控制檯應用程序,點擊項目屬性,將輸出類型設置爲「控制檯應用程序」,以下圖。this

        接下來,把一下這段代碼,主要創建控制檯調用的啓動和中止服務的方法,複製到Service.cs (就是你本身建的Service中)。url

 

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

 

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

            #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/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
相關文章
相關標籤/搜索