C#创建Windows服务(Windows Services)

Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称。用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Windows服务并使用它。这个服务在启动和停止时,向一个文本文件中写入一些文字信息。

C#创建Windows服务第一步:创建服务框架

要创建一个新的 Windows 服务,可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定。

你可以看到,向导向工程文件中增加WebService1.cs类:

其中各属性的含意是:

◆Autolog

是否自动写入系统的日志文件

◆CanHandlePowerEvent

服务时候接受电源事件

◆CanPauseAndContinue

服务是否接受暂停或继续运行的请求

◆CanShutdown

服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程

◆CanStop

服务是否接受停止运行的请求

◆ServiceName

服务名

C#创建Windows服务第二步:向服务中增加功能

在 .cs代码文件中我们可以看到,有两个被忽略的函数 OnStart和OnStop。

OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。在这里,当启动和停止服务时,向一个文本文件中写入一些文字信息,代码如下:

       protected override void OnStart(string[] args)
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt",FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(, SeekOrigin.End);
m_streamWriter.WriteLine("mcWindowsService: Service Started" + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
} protected override void OnStop()
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(, SeekOrigin.End);
m_streamWriter.WriteLine(" mcWindowsService: Service Stopped " + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close(); }

C#创建Windows服务第三步: 将安装程序添加到服务应用程序

Visual Studio.NET 随附有安装组件,可用来安装与服务应用程序相关联的资源。安装组件在正在安装到的系统上注册一项单个的服务,并使服务控制管理器知道该服务的存在。

要正确安装服务,并不需要在安装程序中进行任何特殊编码。但是,如果需要向安装进程添加特殊功能,则可能偶尔需要修改安装程序的内容。

将安装程序添加到服务应用程序的步骤是:

1:在解决方案中,访问要向其中添加安装组件的服务的Design视图。

2:在属性窗口中,单击添加安装程序链接

这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。

3:若要确定如何启动服务,请单击 ServiceInstaller 组件并将 StartType 属性设置为适当的值。

◆Manual

服务安装后,必须手动启动。

◆Automatic

每次计算机重新启动时,服务都会自动启动。

◆Disabled

服务无法启动。

4:将serviceProcessInstaller类的Account属性改为 LocalSystem

这样,不论是以哪个用户登录的系统,服务总会启动。

C#创建Windows服务第四步:生成服务程序

通过从生成菜单中选择生成来生成项目。

注意   不要通过按 F5 键来运行项目——不能以这种方式运行服务项目。

C#创建Windows服务第五步:安装服务

访问项目中的已编译可执行文件所在的目录。

用项目的输出作为参数,从命令行运行 InstallUtil.exe。在命令行中输入下列代码:

  1. installutil yourproject.exe

卸载服务

用项目的输出作为参数,从命令行运行 InstallUtil.exe。

  1. installutil /u yourproject.exe

C# windows服务:创建Windows服务(Windows Services)的一般步骤的更多相关文章

  1. windows下创建/删除服务

    windows下创建/删除服务 1.      windows下创建/删除服务 1.1.    创建服务 命令格式: sc [servername] create Servicename [Optio ...

  2. windows bat发布成服务

    删除服务 删除名为"WINDOWS MANAGEMONT INSTALLER"的系统服务 sc delete "windows managemont Installer& ...

  3. .NET 创建Windows服务,及服务的安装卸载

    .NET服务创建过程 http://jingyan.baidu.com/article/fa4125acb71a8628ac709226.html 相关命令(要以管理员身份打开cmd) 安装服务 -& ...

  4. Windows手工创建服务方法

    需要将程序设置成Windows服务的情况,可以利用一下windows自带的sc命令来创建服务. 该命令的基本用法如下:打开cmd命令, 输入如下信息:1 创建服务:sc create SecServe ...

  5. Windows服务创建及发布

    二.创建Windows Service 1.新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2.在解决方案资源管理器内将Service1.c ...

  6. .net windows 服务创建、安装、卸载和调试

    原文:http://blog.csdn.net/angle860123/article/details/17375895 windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境 ...

  7. Windows服务创建及安装

    Windows服务创建及安装http://www.cnblogs.com/tuyile006/archive/2006/11/27/573654.html

  8. 使用普通Windows服务创建Quartz.Net服务项目

    Quartz.NET 项目地址 http://quartznet.sourceforge.net/ 源码下载地址:Quartz.Net.2.0 首先创建Quartz.Net.2.0解决方案,添加 Wi ...

  9. 基于C#&.net2.0的windows服务创建与安装

    起因:一台服务器中部署的程序,停电后未按照计划任务正常启动. 一.创建并配置Windows服务程序 开发工具VS2015 Framework版本2.0 1.新建Windows服务 2.在Service ...

  10. Redis-环境搭建、创建服务、搭建主从复制-Windows版本

    一.搭建Redis环境 1.链接:http://pan.baidu.com/s/1boKAzzL 密码:sh2r 2.不赘述:执行redis-server.再执行redis-cli即可.redis环境 ...

随机推荐

  1. kafka的API操作

    在集群的接收端 启动producer 在consumer这边能接收到producer发来的数据

  2. vue写后台管理系统问题概述和解决方案

    一个不错的Demo; http://xmall.exrick.cn/#/home 源码:https://gitee.com/Exrick/xmall-front/blob/master/src/pag ...

  3. CS229 6.13 Neurons Networks Implements of stack autoencoder

    对于加深网络层数带来的问题,(gradient diffuse  局部最优等)可以使用逐层预训练(pre-training)的方法来避免 Stack-Autoencoder是一种逐层贪婪(Greedy ...

  4. C# .NET Web Api 保存Session

    Global.asax中添加: public override void Init() { this.PostAuthenticateRequest += (sender, e) => Http ...

  5. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  6. spring -mvc service层调用工具类配置

    在service层时调用工具类时服务返回工具类对象为空 在此工具类上加上@Component注解就可以了 @Component:把普通pojo实例化到spring容器中,相当于配置文件中的 <b ...

  7. spring 之 lookup-method & replaced-method II

    显然, lookup-method 的name 对应的方法 是可以有方法参数的, 但是, 我发现, 参数无法传递, 传过去的参数好像被丢入了黑洞一般... 非常奇怪. lookup-method 的n ...

  8. element(vue.js)+django 整合

    近期开始接触Python,从web开发入门.尝试Django与vue整合,大概分3个阶段: 1.基于Django开发web后端 2.基于element开发好前端 3.前后端整合 参考:https:// ...

  9. JDK7和JDK8concurrentHashmap区别

    哈希表 1.介绍 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值. 哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个 ...

  10. eclipse 导出 javadoc

    项目右键Export ->java/javadoc -> 选择要导出的项目,javadoc.exe,存放路径,导出的级别(private可导出全部) ->在VM option中加入- ...