1、建立windows服务windows
一、用VS建立windows服务,结果以下:设计模式
二、删除默认生成的Service1.cs文件,而后建立本身的服务文件(如:MyService),并修改Program.cs文件的代码,以下:ide
此时,解决方案的目录结构以下:工具
三、双击MyService.cs服务文件,在左侧设计模式中,右键,点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组件,以下:编码
四、右键”ServiceProcessInstaller1“,选择属性,设置Account 账号方式,建议为LocalService,以下:spa
五、右键”ServiceInstaller1“,选择属性,设置属性设计
a)Description 服务描述,直接显示到Windows服务列表中的描述;3d
b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称;调试
c)ServiceName 服务进程名称,安装与卸载服务时的惟一标识.日志
以下:
六、建立安装服务批处理文件Install.bat,能够建立记事本,而后修改后缀为bat,记事本内容以下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause
记事本另存为时设置编码为ANSI,以下图:
七、同理建立建立卸载服务批处理文件Uninstall.bat,内容以下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause
此时解决方案的目录结构以下:
2、写服务代码
右键”MyService.cs“,选择查看代码,以下:
namespace WindowsServiceDemo { partial class MyService : ServiceBase { public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 } protected override void OnStop() { // TODO: 在此处添加代码以执行中止服务所需的关闭操做。 } } }
下面实现本身的简单功能,代码以下:
using System; using System.Diagnostics; using System.IO; using System.ServiceProcess; using System.Timers; namespace WindowsServiceDemo { partial class MyService : ServiceBase { private Timer time = new Timer(); public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { WriteLog("服务启动,时间:"+DateTime.Now.ToString("HH:mm:ss") + "\r\n"); time.Elapsed += new System.Timers.ElapsedEventHandler(MethodEvent); time.Interval = 2 * 1000;//时间间隔为2秒钟 time.Start(); } protected override void OnStop() { WriteLog("服务中止,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n"); } private void MethodEvent(object source, System.Timers.ElapsedEventArgs e) { time.Enabled = false; string result = string.Empty; string startTime = DateTime.Now.ToString("HH:mm:ss"); try { //......... result = "执行成功,时间为:"+ startTime; } catch (Exception exp) { result = "失败,缘由:" + exp.Message; } finally { WriteLog(result); time.Enabled = true; } } /// <summary> /// 日志记录 /// </summary> /// <param name="logInfo"></param> public void WriteLog(string logInfo) { try { string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs"; if (!Directory.Exists(logDirectory)) { Directory.CreateDirectory(logDirectory); } string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; File.AppendAllText(filePath, logInfo); } catch { } } } }
具体功能是2秒钟执行一次,并记录日志。
3、安装windows服务
从新生成整个解决方案,成功后,从项目所在文件夹赋值bin文件到某个自定义的文件夹,并将Install.bat和Uninstall.bat复制到bin下的Debug文件夹中。
以管理员身份运行Install.bat安装服务,成功结果以下图:
这是右键“个人电脑”,选择“管理”,选择“服务”,就能够看到服务已安装,以下图:
同时,Debug文件夹里有了Logs文件,Logs文件夹里有txt文档,内容以下:
能够看到没2秒钟执行一次。
4、卸载windows服务
卸载服务,一样以管理员身份运行Uninstall.bat便可。
5、调试windows服务
打断点,在工具栏选“调试”下的“附加到进程”,附加本身的服务便可调试。