前言:本篇文章环境是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# 服务程序 - 调试服务的更多相关文章

  1. C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  2. VS2013创建Windows服务与调试服务

    1.创建Windows服务 说明: a)Description 服务描述,直接显示到Windows服务列表中的描述: b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称 ...

  3. JAVA使用IDEA本地调试服务的代码

    然后将启动参数的 jdwp=transport=dt_socket,server=y,suspend=n,address=8086 放到服务器上 在执行jar包的命令加入这个 例如 java -jar ...

  4. C#编写的服务程序启动服务时报错误1053

    Application.StartupPath 已知解决方案一:        读写文件路径的问题 用 $"{Application.StartupPath}\\config.txt&quo ...

  5. delphi服务程序(service)的调试方法

    方法一: 1.调试delphi 写的服务程序,有这么一个办法.原来每次都是用attach to process方法,很麻烦.并且按照服务线程的执行线路,可能会停不到想要的断点.笨办法是,在proced ...

  6. Windows服务调试

    Windows 服务(附服务开发辅助工具) 转: http://www.cnblogs.com/BoyXiao/archive/2011/08/07/2130208.html 近来在 Windows ...

  7. C# 开发的windows服务 不能调试——讨论整理

    CSDN的标题:C# 开发的windows服务 不能调试 System.Diagnostics.Debugger.Launch();在想加断点的地方加入这行,是进入断点的,可以进行调试,我的是xp系统 ...

  8. C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程

    前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...

  9. Windows服务调试小结(附Demo)

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 搭建环境 调试方式 Demo下载 本文版权归mephisto和博客园共有,欢迎转载,但须 ...

随机推荐

  1. 运用泛型,冒泡排序实现JDK引用类型数组的排序

    public class Utils { public static <T extends Comparable<T>> void sortList(List<T> ...

  2. import sun.net.www.MimeTable报错

    我原以为是要导什么jar包,仔细一看是 Access restriction: The type * is not accessible due to restriction on required ...

  3. iOS 图片文件格式判断、圆角图片

    1.圆角图片 // 设置圆形图片(放到分类中使用) - (UIImage *)cutCircleImage { UIGraphicsBeginImageContextWithOptions(self. ...

  4. iOS APP可执行文件的组成

    iOS APP编译后,除了一些资源文件,剩下的就是一个可执行文件,有时候项目大了,引入的库多了,可执行文件很大,想知道这个可执行文件的构成是怎样,里面的内容都是些什么,哪些库占用空间较高,可以用以下方 ...

  5. oracle中row_number和rownum的区别和联系(翻译)

    http://www.tuicool.com/articles/bI3IBv 附问题:有以下一个SQL语句: SELECT * FROM ( SELECT t.*, row_number() OVER ...

  6. 在树霉派上配置LAMP

    apache2 配置文件: /etc/apache2/sites-enabled下的000-default.conf <VirtualHost *:> # The ServerName d ...

  7. 半吊子学习Swift--天气预报程序-获取天气信息

    昨天申请的彩云天气Api开发者今天上午已审核通过  饭后运动过后就马不停蹄的来测试接口,接口是采用经纬度的方式来获取天气信息,接口地址如下 https://api.caiyunapp.com/v2/ ...

  8. CSS中各种各样居中方法的总结

    在开发前端页面的时候,元素的居中是一个永远都绕不开的问题.看似简单的居中二字,其实蕴含着许许多多的情况,对应着很多的处理方法,本文就试图对页面布局中的居中问题进行总结~~ 居中问题分为水平居中和竖直居 ...

  9. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  10. Mysql 学习笔记

    创建表: create table testtable( id_ bigint not null AUTO_INCREMENT, name varchar(75) null, vmid varchar ...