c# windows service

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;

namespace WindowsServiceTest
{
    public partial class ServiceTest : ServiceBase
    {
        private DataSet _Ds = new DataSet();
        //設置xml文件保存路徑
        private string _FilePath = @"D:\記錄開關機時間.xml";

        public ServiceTest()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            //每隔一分鐘記錄一次更新一次關機時間
            System.Timers.Timer timer = new System.Timers.Timer(60000);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Click);
            timer.AutoReset = true;
            timer.Enabled = true;

            //判斷文件是否存在
            if (!System.IO.File.Exists(_FilePath))
            {
                CreateDataTable();
            }
            else
            {
                _Ds.ReadXml(_FilePath, XmlReadMode.ReadSchema);
            }

            this.Add("開機時間", DateTime.Now);
            this.Add("關機時間", DateTime.Now);
            this.SaveToXml();
        }

        protected override void OnStop()
        {
            this.Update("關機時間", DateTime.Now);
            this.SaveToXml();
        }

        private void Timer_Click(Object sender,System.Timers.ElapsedEventArgs e)
        {
            this.Update("關機時間",DateTime.Now);
            this.SaveToXml();
        }

        private void CreateDataTable()
        {
            System.Data.DataTable Dt = new DataTable("OPENCLOSE");
            Dt.Columns.Add("TimeType", typeof(string));
            Dt.Columns.Add("OperTime", typeof(DateTime));
            _Ds.Tables.Add(Dt);
        }


        //添加開關機時間記錄
        private bool Add(string TimeType, DateTime OperTime)
        {
            if (_Ds.Tables.Count == 0)
                return false;
            DataTable Dt = _Ds.Tables["OPENCLOSE"];
            if (Dt == null)
                return false;
            DataRow dr = Dt.NewRow();
            dr["TimeType"] = TimeType;
            dr["OperTime"] = OperTime;

            Dt.Rows.Add(dr);
            return true;

        }


        //更新關機時間
        private bool Update(string OperTime, DateTime UpdateTime)
        {
            if (_Ds.Tables.Count == 0)
                return false;
            DataTable Dt = _Ds.Tables["OPENCLOSE"];
            if (Dt == null)
                return false;
            DataRow Dr = Dt.Rows[Dt.Rows.Count - 1];

            Dr["TimeType"] = OperTime;
            Dr["OperTime"] = UpdateTime;
            return true;
        }


        //保存到xml文件
        private void SaveToXml()
        {
            if (_Ds == null)
                return;
            _Ds.WriteXml(_FilePath, XmlWriteMode.WriteSchema);
        }
    }
}

  服務安裝腳本ide

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe
Net Start ServiceTest
sc config ServiceTest start= auto
pause

  服務卸載腳本this

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceTest.exe
pause
相關文章
相關標籤/搜索