windowsservice
1.创建 windows服务 项目
文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服务"
2.系统已经为我们建立了一个 Service1.cs 组件,测试时我们就用它了.
如果要新件的话,右键项目 -> 添加 -> 新建项 -> windows 服务。
3.在 Service1.cs 上 ,按 F7 (右键查看代码),打开代码页。加入我们测试用的代码。
注意:下面的几个方法中的 str 变量,为了我们一会儿调试时设置断点用的!
1 using System; 2 using System.Diagnostics; 3 using System.ServiceProcess; 4 5 namespace WindowsService1 6 { 7 public partial class Service1 : ServiceBase 8 { 9 public Service1() 10 { 11 InitializeComponent(); 12 InitService(); 13 } 14 15 /// <summary> 16 /// 初始化服务参数 17 /// </summary> 18 private void InitService() 19 { 20 base.AutoLog = false; 21 base.CanShutdown = true; 22 base.CanStop = true; 23 base.CanPauseAndContinue = true; 24 base.ServiceName = "Service1"; //这个名字很重要,设置不一致会产生 1083 错误哦(在文章最后会说到这个问题)! 25 } 26 protected override void OnStart(string[] args) 27 { 28 string str ="服务开启"; 29 } 30 31 protected override void OnStop() 32 { 33 string str ="服务停止"; 34 } 35 protected override void OnContinue() 36 { 37 string str ="服务继续运行"; 38 base.OnContinue(); 39 } 40 protected override void OnPause() 41 { 42 string str ="服务暂停"; 43 base.OnPause(); 44 } 45 } 46 }
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 D:\WindowsService1.exe
pause
保存后关闭文本文件,之后将其重命名为“安装服务.bat”文件,注意要修改后缀名为 .bat!
再新建一个文本文件,打开文件加入以下两行命令
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u D:\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 达到了调试的目的了
9.如果想一次安装多个服务,需要按照 2~5 的步骤多添加几个服务就好了!
--------------------------------------------------------------------------------------
问题及解决方案
注册成功后,启动 Windows服务 时遇到错误:1083 的解决办法
1.查看 Main() 方法中是否启动了指定的服务
1 ServiceBase[] ServicesToRun; 2 ServicesToRun = new ServiceBase[] 3 { 4 new Service1(), 5 new Service2() //如果建立多个服务需要添加这段代码 6 }; 7 ServiceBase.Run(ServicesToRun);
2.确保 ProjectInstaller.cs 视图设计器中的 serviceInstaller1 组件的 ServiceName 属性
与 Service1.cs 组件的 ServiceName 属性一致
windowsservice的更多相关文章
- WindowsService(Windows服务)开发步骤附Demo
1.打开VS,新建项目,选择Windows服务,然后设置目录及项目名称后点击确定. 2.展开Service1服务文件,编写service1.cs类文件,不是Service1[设计].然后修改OnSta ...
- WindowsService 安装后报错: 无法启动计算机“.”上的服务 解决方案
问题 : 根据客户的需求做了一个小程序,需要有对WindowsService 安装,卸载,启动,停止的操作. 编译好之后在我的工程内直接Run 没问题.直接在\bin\Debug 点小程序运行,任何操 ...
- 如何在VS2013中新建WindowsService定时任务
http://jingyan.baidu.com/article/cd4c2979e9330d756f6e6070.html 很多人都想做定时任务,但是没有不知道如何下手,现在就用WindowsSer ...
- WindowsService(Windows服务)开发步骤附Demo 【转】
转http://www.cnblogs.com/moretry/p/4149489.html 1.打开VS,新建项目,选择Windows服务,然后设置目录及项目名称后点击确定. 2.展开Service ...
- WindowsService的调试方法
本人转载:http://www.cnblogs.com/xiebin1986/archive/2011/12/15/2288893.html 调试WindowsService,以前用过一个附加到进程的 ...
- WindowsService服务的C#实现
WindowsService(简称服务,下同)是目前做客户端软件后台运行功能的非常好的选择,本文基本解决了服务的创建和编写,代码控制服务的安装.卸载.启动.停止等,为服务传递参数,其他注意事项等 1. ...
- [C#]安装WindowsService的关键步骤
使用.Net编写好了WindowsService以后,不安装到系统里就没有任何作用. [添加Installer] 在服务的设计器画面,属性页面里,选择[Add Installer]链接. 如此便会生成 ...
- WebSocket使用SuperWebSocket结合WindowsService实现实时消息
SuperWebSocket在WebService中的应用 最开始使用是寄托在IIS中,发布之后测试时半个小时就会断开,所以改为WindowsService 1. 新建Windows服务项目[Test ...
- WindowsService服务安装脚本
安装脚本%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\liuyl\WeiXinService\WindowsSe ...
- WCF寄宿控制台.WindowsService.WinFrom.WebAPI寄宿控制台和windows服务
先建立wcf类库.会默认生成一些试用代码.如下: public class Service1 { public string GetData(int value) { return string.Fo ...
随机推荐
- C# Async, Await and using statements
Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提高程序的响应能力.比如: Application area Support ...
- 预处理指令#pragma
#pragma介绍 #pragma是一个预处理指令,pragma的中文意思是『编译指示』.它不是Objective-C中独有的东西(貌似在C/C++中使用比较多),最开始的设计初衷是为了保证代码在不同 ...
- php数组array_push()和array_pop()以及array_shift()函数
<?php /** * array_push()将一个或多个单元压入数组的末尾(入栈) */ $stack = array("Java", "Php", ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
- JS 深浅拷贝
首先理解概念 浅拷贝: 只复制对象的基本类型, 对象类型, 仍属于原来的引用. 深拷贝: 不紧复制对象的基本类, 同时也复制原对象中的对象.就是说完全是新对象产生的. 首先看浅拷贝 //浅拷贝 var ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- 第三方提权之serv-u提权
文章比较简单,只是做一个科普.给一个好朋友的. 倘若口令更改了大家可以去serv-u的目录(默认路径:C:\Program Files\Serv-U\)找其配置文件(ServUDaemon.ini), ...
- css垂直居中方法盘点
1.单行文字垂直居中 利用 line-height 即可轻松实现,如下示例: height:45px;line-height:45px; 2.多行文本固定高度垂直居中1 利用 display:tabl ...
- pycharm2016 激活
pycharm 2016 专业版 激活方式选第二种 code 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibG ...
- STM32F412应用开发笔记之二:基本GPIO控制
NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...