出售域名 11365.com.cn
有需要请联系 16826375@qq.com
在手机上浏览
在手机上浏览

c#创建服务程序

发布日期:2019-12-23

服务程序不经常用,但用的时候又要查资料,所以这次做个记录,当做备忘录吧!

一、打开VS新建一个服务项目

然后在服务程序Service1.cs(当然你也可以改成MyService.cs,只要你喜欢)的源代码中,添加一个全局时间控制器,并在启动结束中添加相应的代码。如:

public partial class TermOneService : ServiceBase
{
    System.Timers.Timer kaoQinTimer = new System.Timers.Timer(int.Parse(ConfigurationManager.AppSettings["KQTimeOut"]));
    ILog log = LogManager.GetLogger("一期线长服务");

    public TermOneService()
    {            
        kaoQinTimer.AutoReset = true;
        kaoQinTimer.Elapsed += new System.Timers.ElapsedEventHandler(kaoQinTimer_Elapsed);

        InitializeComponent();
    }

    protected void kaoQinTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        //在这里编写业务代码
    }

    protected override void OnStart(string[] args)
    {
        kaoQinTimer.Enabled = true;
        kaoQinTimer.Start();
        log.Info("考勤服务已经启动");
    }

    protected override void OnStop()
    {
        kaoQinTimer.Stop();
        kaoQinTimer.Enabled = false;
        log.Info("考勤服务已停止");
    }
}


二、添加安装程序
业务功能编写完成后,在Service1.cs的设计界面,点击右键添加安装程序:

双击新创建的程序文件ProjectInstaller.cs,在设计界面可以看到:

1、选中ServiceInstaller1,按F4查看属性:

1)    ServiceName
服务名称,启动/停止/删除服务,指向此服务名称
2)    DisplayName
显示的名称,在服务中显示的名称
3)    Description
服务描述
4)    StartType
启动类型:Automatic(自动)
服务安装后查看服务可以看到对应的信息


2、选中serviceProcessInstaller1,按F4查看属性:

Account:服务运行的账户,我这里选择本地系统,具有最高权限。

三、安装服务
以上配置完成后编译程序。编译完成后把bin/debug的文件复制出来(当然也可以发布),清除不必要的文件。找到以下目录把安装工具InstallUtil.exe复制一份(32位系统目录把Framework64替换成Framework):

以管理员身份打开CMD命令窗口:

cd到你的服务程序所在的目录下,执行安装命令
F:\mywork> InstallUtil TermOneService.exe
安装成功后,需要启动服务,相关命令如下:
//启动服务
sc start TermOneService
//停止服务
sc stop TermOneService
//删除服务
sc delete TermOneService

--设置服务启动和延迟启动
//自动
sc config TermOneService start=auto
//自动(延迟启动)
sc config TermOneService start=delayed-auto

注:自定义的服务最好选择延迟启动。