C# 服务程序 - 调试服务
前言:本篇文章环境是VS2015,win10.如果有任何的差别,请注意
1. 创建服务程序
1)用VC创建服务程序,叫做 MyTestWindowsService

创建完成之后,可以看到

2)添加安装程序
右键我们的服务Service,添加安装程序

添加完成之后,可以看到,多了一个ProjectInstaller.cs的类。这里我们可以设置服务的一些属性

3)设置服务的属性
点击ProjectInstaller.cs,看到

首先,我们点击serviceProcessInstaller1,可以看到

Name我们可以设定自己的名字,我们这里Name改成serviceProcessInstallerMyTest。Accout改成LocalSystem。如下:

然后,点击serviceInstaller1,可以看到

ServiceName是服务名字,StartType是服务启动方式,我们都做修改,如下:

2. 写代码
我们开始在Service1上面写代码,下一个测试线程来测试服务。每5秒运行一次
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
Console.WriteLine("服务启动");
new Thread(Run).Start();
} protected override void OnStop()
{
Console.WriteLine("服务结束");
} private void Run()
{
while (true)
{
Thread.Sleep();
}
}
}
注意:
很多人在写服务程序时,喜欢把自己线程的代码写在Proram.cs文件中,这个是不正确的,一般都写在服务类中的OnStart方法。
因为OnStart方法才是你启动了服务才要开始干的事情。Proram.cs是安装服务完成时就开始干事情 了。
3. 安装与启动服务
1)安装服务
在调试服务之前,都要安装服务。
我们打开用来安装服务程序的util,叫做 InstallUtil.exe。一般都在路径
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319

然后用命令行工具打开上面的路径

运行以下命令安装(如果要重新安装,首先卸载,再安装)
installUtil F:\ProjectWorkspace\C#\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.exe
运行以下命令卸载
installUtil /u F:\ProjectWorkspace\C#\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.exe
可以看到,安装成功

安装完成之后,我们可以到服务中心看到我们的服务ServiceMyTest

2)启动服务
上面的界面,右键来启动服务
4. 开始与VS做调试
1)断点我们要调试的行

2)打开【调试】—>【附加到进程】
可以看到我们的服务,记得选择【显示所有用户的进程】,最后按【附加】按钮,开始调试

到此,完成调试工作
可以关注本人的公众号,多年经验的原创文章共享给大家。

C# 服务程序 - 调试服务的更多相关文章
- C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)
本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...
- VS2013创建Windows服务与调试服务
1.创建Windows服务 说明: a)Description 服务描述,直接显示到Windows服务列表中的描述: b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称 ...
- JAVA使用IDEA本地调试服务的代码
然后将启动参数的 jdwp=transport=dt_socket,server=y,suspend=n,address=8086 放到服务器上 在执行jar包的命令加入这个 例如 java -jar ...
- C#编写的服务程序启动服务时报错误1053
Application.StartupPath 已知解决方案一: 读写文件路径的问题 用 $"{Application.StartupPath}\\config.txt&quo ...
- delphi服务程序(service)的调试方法
方法一: 1.调试delphi 写的服务程序,有这么一个办法.原来每次都是用attach to process方法,很麻烦.并且按照服务线程的执行线路,可能会停不到想要的断点.笨办法是,在proced ...
- Windows服务调试
Windows 服务(附服务开发辅助工具) 转: http://www.cnblogs.com/BoyXiao/archive/2011/08/07/2130208.html 近来在 Windows ...
- C# 开发的windows服务 不能调试——讨论整理
CSDN的标题:C# 开发的windows服务 不能调试 System.Diagnostics.Debugger.Launch();在想加断点的地方加入这行,是进入断点的,可以进行调试,我的是xp系统 ...
- C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程
前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...
- Windows服务调试小结(附Demo)
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 搭建环境 调试方式 Demo下载 本文版权归mephisto和博客园共有,欢迎转载,但须 ...
随机推荐
- android中接口和抽象类的区别
最近发现很多基础有点生疏了,特地写一点博客来巩固一下.今天主要来谈谈接口和抽象类的区别,我们在项目的很多地方都会用到接口或者抽象类,但是它们之间的一些区别和相同点不知道大家有没有注意到,还有就是,什么 ...
- 阿里云linux ecs服务器配置apache+php环境
我们需要安装的软件有apache,php和MySQL. 首先关闭SELINUX(SELINUX是一个安全子系统,它能控制程序只能访问特定文件.如果不关闭,你可能访问文件受限): vi /etc/sel ...
- Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...
- js 短信验证码 计时器
$(function(){ getMsg(); //页面加载完成之后执行 }) function getMsg(){ //注册按钮的点击事件 $("#smsBtn").on(&qu ...
- mina通信 demo
1,要用到4个jar 2,服务端 package mina.server; import java.io.IOException; import java.net.InetSocketAddress; ...
- Sql判断不为Null也不为空的写法
看到不少人写: isnull(field,'')<>'' 其中这样写最经济实惠:field>''
- MySql UDF 调用外部程序和系统命令
1.mysql利用mysqludf的一个mysql插件可以实现调用外部程序和系统命令 下载lib_mysqludf_sys程序:https://github.com/mysqludf/lib_mysq ...
- spring里的controller之间的跳转
未测试: this.getServletContext().getRequestDispatcher("/rentHouse.htm?method=display").forwar ...
- [ios]新手笔记-。-UIPickerView 关于伪造循环效果和延时滚动效果
查找了网上资料,循环效果绝大部分都是增加行数来制造循环的错觉,延时滚动就是利用NSTimer间隔出发滚动事件来制造滚动效果. 代码: #import <UIKit/UIKit.h>#imp ...
- SpringMVC 框架的搭建及基本功能的实现
首先新建一个WEB项目 导入jar包 我们基于Spring mvc框架进行开发,需要依赖一下的spring jar包: spring-aop-4.0.4.RELEASE.jar spring-bean ...