创建项目选择Windows Service

创建好项目之后,在生成的Service1.cs的设计页面右键选择Add Installer,会生成一个ProjectInstaller.cs。这个文件中有两个组件:serviceProcessInstaller和serviceInstaller。

对这两个组件进行设置:

serviceProcessInstaller设置属性Account为LocalSystem,这样创建服务的时候,不需要用户名和密码。

serviceInstaller1设置属性ServiceName,Description和DisplayName。ServiceName代表服务名称,Description代表服务的描述,DisplayName代表服务的显示名称。还有另外两个属性DeplayedAutoStart配置成True,StartType配置成Automatic。

从下图服务列表可以看出名称对应DisplayName,描述对应Description,启动类型对应StartType,登录为对应Account(serviceProcessInstaller)。

服务具体代码的编写涉及到service.cs中的OnStart和OnStop两个函数:

protected override void OnStart(string[] args)
{
} protected override void OnStop()
{
}

在服务函数完成、编译成功之后,在生成的exe文件夹下放入两个批处理文件:


安装服务:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe ServiceExample.exe

Pause

卸载服务:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u X5_Statistic.exe

Pause


C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe是由于程序用的是.net4.0的framework,后面的ServiceExample.exe不过是exe文件名。

需要注意这几个事情

1 StartType即使配置成Automatic,在首次安装成功之后还是要在服务列表中找到并手工启动。(当然,可以在OnStart函数中通过编码实现安装后自动启动)

2 在服务中处理,避免不了使用定时器,要注意这里不能使用Form命名空间下的Timer,因为服务不是窗体类型的应用,所以不能使用这个组件。要使用System.Timers下的Timer。

3 如果服务执行异常,会导致服务启动失败,提示是类似“…服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止”的语句,这种情况下不容易查出毛病在哪,当然可以通过attach to process来调试,不过我自己更习惯于在普通的form程序中通过按钮模拟找出程序执行异常的关键代码,修改通过之后再移植到服务的代码中再测试。

4 要获取服务所在的目录,请使用AppDomain.CurrentDomain.BaseDirectory这个只读属性。建议需要生成服务的执行情况日志的,将日志文件放在服务所在的目录下。

使用C#创建windows 服务的更多相关文章

  1. 用C#创建Windows服务(Windows Services)

    用C#创建Windows服务(Windows Services) 学习:  第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...

  2. 玩转Windows服务系列——创建Windows服务

    创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Windows服务项目. 生成的解决方案包含两个项目:Servi ...

  3. .Net创建windows服务入门

    本文主要记录学习.net 如何创建windows服务. 1.创建一个Windows服务程序 2.新建安装程序 3.修改service文件 代码如下 protected override void On ...

  4. C# 创建Windows服务

    创建windows服务项目   2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart用于执行服务事件,一般采用线程方式执行方法,便于隔一段事件执行一回 END ...

  5. 使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  6. [转]C#创建Windows服务与安装

    本文档用于创建windows服务说明,使用vs2010系统平台 创建项目 1 创建windows服务项目 2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart ...

  7. [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务

    除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...

  8. 在64位windows下使用instsrv.exe和srvany.exe创建windows服务

    在64位windows下使用instsrv.exe和srvany.exe创建windows服务   在32位的windows下,包括windows7,windows xp以及windows 2003, ...

  9. 使用Topshelf 5步创建Windows 服务 z

    使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with T ...

  10. C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)

       功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...

随机推荐

  1. cxf之Caused by: java.lang.RuntimeException: Soap 1.1 endpoint already registered on address /rest

    发布rest服务 但是spring-cxf-rest.xml中配置的却是 <jaxws:server address="/weather".................. ...

  2. html学习第一讲(内容html常规控件的的使用)

    <html> <head> <title> 这是网页的标题</title> </head> <body> <h2>& ...

  3. CoreData数据库升级

    如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下: 1.选中你的mydata.xc ...

  4. 【LeetCode】150. Evaluate Reverse Polish Notation

    Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish No ...

  5. linux内核线程,进程,线程

    http://blog.csdn.net/dyllove98/article/details/8917197 Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起.( ...

  6. Linux内核同步 - RCU synchronize原理分析

    RCU(Read-Copy Update)是Linux内核比较成熟的新型读写锁,具有较高的读写并发性能,常常用在需要互斥的性能关键路径.在kernel中,rcu有tiny rcu和tree rcu两种 ...

  7. javascript怎么禁用浏览器后退按钮

    1. <script language="JavaScript">    javascript:window.history.forward(1); </scri ...

  8. 配置新服务器 的一些 依赖库 php mysql nginx

    利用CentOS Linux系统自带的yum命令安装.升级所需的程序库 LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel ...

  9. mac重装系统

    通过 macOS 恢复功能启动macOS 恢复功能会根据您在电脑启动时按下的组合键来安装不同版本的 macOS.在按电源按钮打开 Mac 后,立即按住以下组合键之一.然后在看到 Apple 标志或旋转 ...

  10. modelsim 保存波形文件

    1. do文件记录了仿真的过程和加载的各种库. do文件的保存过程: file——>save format——>D:/modeltech_6.5b/examples/run_wave.do ...