C#建立Windows服務與安裝-圖解

來源:互聯網
上載者:User

標籤:

1.建立windows服務項目

2.右鍵點擊Service1.cs,查看代碼, 用於編寫操作邏輯代碼

3.代碼中OnStart用於執行服務事件

  public partial class Service1 : ServiceBase    {        string logFilePath = "";        LogHelper logHelper;        WendyWuBll bll = new WendyWuBll();        public Service1()        {            logFilePath = ConfigurationManager.AppSettings["syncFeefoDataLog"];            logHelper = new LogHelper(logFilePath);            InitializeComponent();            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);                }        void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)        {            try            {                Exception ex = e.ExceptionObject as Exception;                logHelper.WriteLine("來自“MonitorOnServer”的全域異常。" + ex.Message + "詳細資料如下:"                                    + Environment.NewLine + "[InnerException]" + ex.InnerException                                    + Environment.NewLine + "[Source]" + ex.Source                                    + Environment.NewLine + "[TargetSite]" + ex.TargetSite                                    + Environment.NewLine + "[StackTrace]" + ex.StackTrace);            }            catch { }        }        private delegate void NewTaskDelegate();        protected override void OnStart(string[] args)        {            EventLog.WriteEntry("同步feefo資料服務啟動");  //在系統事件查看器裡的應用程式事件裡來源的描述            logHelper.WriteLine("服務啟動");       //自訂日誌            logHelper.WriteLine("服務版本1.1");            NewTaskDelegate task = bll.IntData;            //使用BeginInvoke方法非同步呼叫newTask方法,並傳入2000作為newTask的參數            IAsyncResult asyncResult = task.BeginInvoke( null, null);            System.Timers.Timer t = new System.Timers.Timer();            t.Interval = 1000;            t.Elapsed+=new System.Timers.ElapsedEventHandler(ChkSrv);//到達時間時候執行事件            t.AutoReset = true;//設定執行一次(false)還是一直執行(true)            t.Enabled = true;//是否執行system.Timers.Timer.ElapseEventHander事件            bll.SetServiceStatus("WendyWuAutoService", "Running");        }        private void ChkSrv(object sender, System.Timers.ElapsedEventArgs e)        {            int intHour = e.SignalTime.Hour;            int intMinute = e.SignalTime.Minute;            int intSecond = e.SignalTime.Second;            if ((intMinute == 00 && intSecond == 00) || (intMinute == 30 && intSecond == 00))//定時設定,判斷每天八點執行            {                               try                 {                    logHelper.WriteLine("開始從feefo同步資料");                    System.Timers.Timer tt = (System.Timers.Timer)sender;                    bll.SyncDataFromFeefo();                    logHelper.WriteLine("從feefo同步資料完成");                }                catch(Exception ex)                {                    logHelper.WriteLine(ex.Message);                }            }            else if ((intMinute == 15 && intSecond == 00) || (intMinute == 25 && intSecond == 00) || (intMinute == 35 && intSecond == 00) || (intMinute == 45 && intSecond == 00) || (intMinute == 55 && intSecond == 00))            {                try                {                    logHelper.WriteLine("自動郵件發送服務啟動" + DateTime.Now.ToString());                    bll.SendEmail();                    logHelper.WriteLine("郵件發送完成" + DateTime.Now.ToString());                }                catch(Exception ex)                {                    logHelper.WriteLine(ex.Message);                }            }        }        protected override void OnStop()        {            logHelper.WriteLine("服務停止");            EventLog.WriteEntry("同步feefo資料服務停止");            bll.SetServiceStatus("WendyWuAutoService", "Stopped");        }    }

 

 

安裝服務配置

1.開啟Service1.cs視圖介面

2.在視圖內右鍵-->添加安裝程式

3.

項目中添加了ProjectInstaller.cs檔案,該檔案中視圖自動會添加倆個組件

serviceProcessInstaller1

serviceInstaller1

4.選中serviceProcessInstaller1組件,查看屬性,設定account為LocalSystem

5. 選中serviceInstaller1組件,查看屬性

  設定ServiceName的值, 該值表示在系統服務中的名稱

  設定StartType, 如果為Manual則手動啟動,預設停止,如果為Automatic為自動啟動

  設定Description,添加服務描述

安裝服務

1.點擊 開始,運行中輸入cmd,擷取命令提示字元

win7需要已管理員的身份啟動,否則無法安裝

2.

輸入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 斷行符號

切 換目前的目錄,此處需要注意的是,在C:\Windows\Microsoft.NET\Framework目錄下有很多類似版本,具體去哪個目錄要看項目 的運行環境,例 如果是.net framework2.0則需要輸入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

3.

輸入 InstallUtil.exe E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe 斷行符號

說明:E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe表示項目產生的exe檔案位置

4.開啟服務,就可以看到已經安裝的服務了

 

卸載服務
  1.  

    卸載很簡單,開啟cmd, 直接輸入 sc delete WinServiceTest便可

C#建立Windows服務與安裝-圖解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.