会出现serviceInstaller1和serviceProcessInstaller1两个组件 2、将service

时间:2022-01-18 08:26:45

一、创建window处事

1、新建项目-->选择Windows处事。默认生成文件包孕Program.cs,Service1.cs

2、在Service1.cs添加如下代码:

System.Timers.Timer timer1;  //计时器

public Service1()

{

InitializeComponent();

}

protected override void OnStart(string[] args)  //处事启动执行

{

timer1 = new System.Timers.Timer();

timer1.Interval = 3000;  //设置计时器事件间隔执行时间

timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);

timer1.Enabled = true;

}

protected override void OnStop()  //处事遏制执行

{

this.timer1.Enabled = false;

}

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

{

//执行SQL语句或其他操纵

}

二、添加window处事安置措施

1、打开Service1.cs【设计】页面,点击右键,选择【添加安置措施】,会呈现serviceInstaller1和serviceProcessInstaller1两个组件

2、将serviceProcessInstaller1的Account属性设为【LocalSystem】, serviceInstaller1的StartType属性设为【Automatic】,ServiceName属性可设置处事名称,从此在【打点工 具】--》【处事】中即显示此名称

3、ProjectInstaller.cs文件,在安置处事后一般还需手动启动(即使上述StartType属性设为【Automatic】),可在ProjectInstaller.cs添加如下代码实现安置后自动启动

public ProjectInstaller()

{

InitializeComponent();

this.Committed += new InstallEventHandler(ProjectInstaller_Committed);   

}

private void ProjectInstaller_Committed(object sender, InstallEventArgs e)

{

//参数为处事的名字

System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("处事名称");

controller.Start();

}   

三、安置、卸载window处事

1、输入cmd(命令行),输入cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319,2.0为cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

2、安置处事(项目生成的exe文件路径)

InstallUtil "E:\WindowsService1\bin\Debug\WindowsService1.exe"

3、卸载处事

InstallUtil  /u "E:\WindowsService1\bin\Debug\WindowsService1.exe"

四、检察window处事

控制面板-->打点工具-->处事,可在此手动启动,遏制处事

五、调试window处事

1、通过【事件检察器】检察

2、直接在措施中调试(菜单-->调试-->附加进程-->处事名(这里的处事名是项目名称,不是ServiceName属性自界说的名称,所以建议自界说名称和项目名称连结一致,此外需勾选【显示所有用户的进程】才华看随处事名)-->附加

3. 在措施中打断点调试即可,此外调试处事时处事必需已启动(打点工具-->处事)

文字转自:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Text;
using System.Timers;
using System.Data.SqlClient;
using System.Threading;

namespace InnPoint
{
    public partial class Service : ServiceBase
    {
        public Service()
        {
            InitializeComponent();
        }

protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("我的处事启动");//在系统事件检察器里的应用措施事件里来源的描述
            writestr("处事启动");//自界说文即日志
            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.Elapsed事件; 
        }

/// <summary>
        /// 按时查抄,并执行要领
        /// </summary>
        /// <param></param>
        /// <param></param>
        public void ChkSrv(object source, System.Timers.ElapsedEventArgs e)
        {
            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
           
            if (intHour == 13 && intMinute == 30 && intSecond == 00) ///按时设置,判断分时秒
            {
                try
                {
                    System.Timers.Timer tt = (System.Timers.Timer)source;
                    tt.Enabled = false;
                    SetInnPoint();
                    tt.Enabled = true;
                }
                catch (Exception err)
                {
                    writestr(err.Message);
                }
            }
        }