c#创建、安装、卸载、调试windows服务的简单事例
2015-10-11 18:03
831 查看
最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉用c#创建、安装、卸载、调试windows服务的步骤。
一、创建windows服务
1、用VS创建windows服务,结果如下:
2、删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件的代码,如下:
此时,解决方案的目录结构如下:
3、双击MyService.cs服务文件,在左侧设计模式中,右键,点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组件,如下:
4、右键”ServiceProcessInstaller1“,选择属性,设置Account 帐号方式,建议为LocalService,如下:
5、右键”ServiceInstaller1“,选择属性,设置属性
a)Description 服务描述,直接显示到Windows服务列表中的描述;
b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称;
c)ServiceName 服务进程名称,安装与卸载服务时的唯一标识.
如下:
6、创建安装服务批处理文件Install.bat,可以创建记事本,然后修改后缀为bat,记事本内容如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause
记事本另存为时设置编码为ANSI,如下图:
7、同理创建创建卸载服务批处理文件Uninstall.bat,内容如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause
此时解决方案的目录结构如下:
二、写服务代码
右键”MyService.cs“,选择查看代码,如下:
下面实现自己的简单功能,代码如下:
具体功能是2秒钟执行一次,并记录日志。
三、安装windows服务
重新生成整个解决方案,成功后,从项目所在文件夹赋值bin文件到某个自定义的文件夹,并将Install.bat和Uninstall.bat复制到bin下的Debug文件夹中。
以管理员身份运行Install.bat安装服务,成功结果如下图:
这是右键“我的电脑”,选择“管理”,选择“服务”,就可以看到服务已安装,如下图:
同时,Debug文件夹里有了Logs文件,Logs文件夹里有txt文档,内容如下:
可以看到没2秒钟执行一次。
四、卸载windows服务
卸载服务,同样以管理员身份运行Uninstall.bat即可。
五、调试windows服务
打断点,在工具栏选“调试”下的“附加到进程”,附加自己的服务即可调试。
一、创建windows服务
1、用VS创建windows服务,结果如下:
2、删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件的代码,如下:
此时,解决方案的目录结构如下:
3、双击MyService.cs服务文件,在左侧设计模式中,右键,点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组件,如下:
4、右键”ServiceProcessInstaller1“,选择属性,设置Account 帐号方式,建议为LocalService,如下:
5、右键”ServiceInstaller1“,选择属性,设置属性
a)Description 服务描述,直接显示到Windows服务列表中的描述;
b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称;
c)ServiceName 服务进程名称,安装与卸载服务时的唯一标识.
如下:
6、创建安装服务批处理文件Install.bat,可以创建记事本,然后修改后缀为bat,记事本内容如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause
记事本另存为时设置编码为ANSI,如下图:
7、同理创建创建卸载服务批处理文件Uninstall.bat,内容如下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause
此时解决方案的目录结构如下:
二、写服务代码
右键”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秒钟执行一次,并记录日志。
三、安装windows服务
重新生成整个解决方案,成功后,从项目所在文件夹赋值bin文件到某个自定义的文件夹,并将Install.bat和Uninstall.bat复制到bin下的Debug文件夹中。
以管理员身份运行Install.bat安装服务,成功结果如下图:
这是右键“我的电脑”,选择“管理”,选择“服务”,就可以看到服务已安装,如下图:
同时,Debug文件夹里有了Logs文件,Logs文件夹里有txt文档,内容如下:
可以看到没2秒钟执行一次。
四、卸载windows服务
卸载服务,同样以管理员身份运行Uninstall.bat即可。
五、调试windows服务
打断点,在工具栏选“调试”下的“附加到进程”,附加自己的服务即可调试。
相关文章推荐
- C#异常处理
- C#继承和多态
- C# FTP常规方法
- C# : SciTE 配置 cs 编译选项
- C#自定义特性和反射
- C#动态数组ArrayList介绍
- 学习c#老师布置得第一个作业
- 西门子PLC Modbus写入float字节排列
- C#中的方法(函数),委托和事件
- C#中var关键字
- c# 数据类型占用的字节数
- 使用Async和Await进行异步编程(C#版 适用于VS2015) z
- C#使用基类的引用 and 虚方法和覆写方法
- C#内存管理-栈堆/回收器托管/非托管资源释放/指针的应用
- c# 用 throw 来抛出异常
- C#学习日记20----static静态变量 与 常量
- (转)C#中“EQUALS”与“==”的速度比较
- C#中使用数组存储5个学生成绩,计算并输出最高成绩和平均值。
- C# Lambda表达式
- [C#反编译教程]001.Reflector.NET反编译工具 v8.5绿色版+注册机+注册教程