服务程序不经常用,但用的时候又要查资料,所以这次做个记录,当做备忘录吧!
一、打开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
注:自定义的服务最好选择延迟启动。