本文是对网上的文章进行整理与测试,原文地址:点击打开链接
1、新建、添加 windows服务 项目。
2、在类(Service1.cs)中进行编辑方法:
using System;
using System.Diagnostics;
using System.ServiceProcess;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
InitService();
}
/// <summary>
/// 初始化服务参数
/// </summary>
private void InitService()
{
base.AutoLog = false;
base.CanShutdown = true;
base.CanStop = true;
base.CanPauseAndContinue = true;
base.ServiceName = "Service1"; //这个名字很重要,设置不一致会产生 1083 错误哦!
}
protected override void OnStart(string[] args)
{
string str ="服务开启";
}
protected override void OnStop()
{
string str ="服务停止";
}
protected override void OnContinue()
{
string str ="服务继续运行";
base.OnContinue();
}
protected override void OnPause()
{
string str ="服务暂停";
base.OnPause();
}
}
}
3、如果需要多个服务,可以在项目中添加 windows服务,然后修改程序入口:
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1(),
new MainServ()
};
ServiceBase.Run(ServicesToRun);
}
}
4.建立服务的“安装程序”
4.1 双击”Service1.cs“,打开 Service1.cs 的视图设计器4.2 在视图设计器中任意位置右键,选择”添加安装程序“
4.3 这时项目跟目下将出现一个 ProjectInstaller.cs 的组件(如果是第一次添加”安装程序“的话)
4.4 双击 ProjectInstaller.cs 打开 ProjectInstaller 的视图设计器
4.5 找到 serviceInstaller1 组件,选中后按 F4 键,设置组件属性。
Description=“测试服务1”;
DisplayName=“Service1”;
ServiceName=“Service1”;//这个值必须和 WindowsService1.InitService() 方法下设置的 base.ServiceName 属性一至。
StartType 为服务运行类型,根据你的需要设置即可。(Manual:手动启动,AutoMatic 为自动启动)
4.6 找到 serviceProcessInstaller1 组件,选中后按 F4 键,设置组件属性。
Account=“LocalSystem”; //设置为其他的属性在开启服务时,会提示输入用户名和密码
4.7 这样就完成了一个服务的所有准备,下面就是安装和测试工作。
5.生成组件
右键项目,选择“生成”。6.安装组件
6.1 使用 InstallUtil.exe 工具注册组件服务,文件位置在不同版本的 framework 中。我用的是 4.0 所以在一下位置C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
6.2 打开生成目录,如果生成成功会有一个 WindowsService1.exe 文件
6.3 在生成目录根目录下新加两个 bat(批处理文件),用于安装和卸载服务
新建一个文本文件,打开文件加入以下两行命令
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe WindowsService1.exe
pause
保存后关闭文本文件,之后将其重命名为“安装服务.bat”文件,注意要修改后缀名为 .bat!
再新建一个文本文件,打开文件加入以下两行命令
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u WindowsService1.exe
pause
保存后关闭文本文件,之后将其重命名为“卸载服务.bat”文件,注意要修改后缀名为 .bat!
6.4 “安装服务.bat”文件,安装windows 服务
7.安装成功后需要手动开启服务,因为我们刚设置 serviceInstaller1.StartType 为 Manual
打开windows 服务管理器,找到名为 Service1 的服务,右键属性。点击【启动】按钮8.windows 调试
8.1 回到开发环境,选择调试->附加到进程,勾选”显示所有用户进程“8.2 找到 WindowsService1.exe 进程(如果没有点击下刷新按钮),选中后点击“附加到进程”按钮。
8.3 选中 Service1.cs 文件,后按 F7 打开代码视图
8.4 在所有 str 变量上添加调试断点
8.5 回到windows服务管理器,找 Service1 服务并选中它,在左侧有一个“暂停”按钮。点击一下
这时,OnPause 方法下的断点命中!OK 达到了调试的目的了