.Net平台下开发Windows服务的支持库很多,除了通过标准的Windows服务项目,还有一些优秀的开源架构比如:TopSelf;本文以常规项目为例

一、开发

1、新建【Windows服务】 项目:Practice.WinSvc.Normal;可以看到自动新建了一个服务类;点击打开设计界面;设计界面右键可以查看代码界面;

2、新建业务处理类OrderJob.cs

using System;
using System.Threading; namespace Practice.WinSvc.Normal
{
public sealed class OrderJob
{
private Boolean _IsStop = false;
private Thread _Thread;
public void Start()
{
_IsStop = false;
_Thread = new Thread(new ThreadStart(StartJob));
} private void StartJob()
{
while (!_IsStop)
{
//Do Some thing Thread.Sleep();
}
} public void Stop()
{
_IsStop = true; }
}
}

3、打开我们的服务PracticeWinSvcNormalService查看代码,修改:

namespace Practice.WinSvc.Normal
{
public partial class PracticeWinSvcNormalService : ServiceBase
{
public PracticeWinSvcNormalService()
{
InitializeComponent();
}
public OrderJob _orderjob = new OrderJob();
protected override void OnStart(string[] args)
{
_orderjob.Start();
} protected override void OnStop()
{
_orderjob.Stop();
}
}
}

4、添加安装程序,在服务设计界面上右键——添加安装程序,会自动添加一个ProjectInstaller里面包含了两个控件设置一些服务的属性 ;至此一个完整的服务开发完成

StartType设置手动、自动等等;ServiceName:设置服务的名称;

namespace Practice.WinSvc.Normal
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}

二、安装

1、方法:命令行

开发完成后编译Debug版本;安装要使用一个.Net Framework自带的工具InstallUtil.exe;使用.Net4.0的工具

输入命令:

InstallUtil.exe D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe

卸载

InstallUtil.exe \u D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe

也可以重新定义服务的名字

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "MyServer.exe" -service /serviceName:"myServer-v1"

调试的时候附加到进程就可以了;

2、添加VS外部工具

这个看个人习惯,添加进去方便直接在vs就执行安装;免去命令行的麻烦;直接编译过项目,点击工具——我们设置的名称就可以安装;

C#常规开发Windows服务的更多相关文章

  1. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  2. 使用Visual Studio 2015 Community 开发windows服务

    昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享……  1.基础   Windows服务是指系统启动时能够自己运行的程序.W ...

  3. C#开发Windows服务 附简单实例实现禁止QQ运行

    本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...

  4. VS2013开发Windows服务项目

    这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务 ...

  5. C#开发Windows服务详细流程

    1.Windows服务简单介绍 Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务.一般情况下,用户不能通过用户界面来安装和启 ...

  6. 使用Topshelf开发Windows服务、log4net记录日志

    开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...

  7. 开发Windows服务

          在开发Windows服务时需要注意一点,如果在开发完成后,需要通过命令来进行安装的,那么在开发的时候,需要在服务类上面添加一个安装文件.如下图:               添加完成后,就 ...

  8. c#金额转换成中文大写金额 .Net开发Windows服务

    c#金额转换成中文大写金额   2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...

  9. C#开发windows服务如何调试——资料整理

    原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...

随机推荐

  1. java源码 -- LinkedHashMap

    一.概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题. 除此之外,Linke ...

  2. IDEA使用 maven 搭建 SSM 框架

    文章目录 pom 文件的编写 项目结构 SSM 配置文件的编写 web.xml 的配置 总结 公司有个小的内部使用的软件,让开发,自己选择使用 SSM :因为之前自己学过,本以为一切水到渠成,但是好久 ...

  3. 剑指offer57:二叉树的下一个结点

    1 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 2 思路和方法 中序遍历,下一个结点有两种情况 a ...

  4. 在一个form表单中实现多个submit不同的action

    在button中用JS的事件绑定onclick实现,如下: <!-- employees是表单的name属性值--> <script type="text/javascri ...

  5. SAS学习笔记13 SAS数据清洗和加工(续)

    查找缺失值 cha[*]和num[*]是建立数组cha和num,但不指定数组中的元素数 自动变量_character_表示数据集中的所有字符型变量 自动变量_numeric_表示数据集中的所有数值型变 ...

  6. 第四讲,数据目录表之导入表,以及IAT表

    一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 它会Call 下边的Jmp位置 而Jmp位置则是对一个全局变量取内容. 看 ...

  7. 改善C#程序的方法

    写在开头: http://www.cnblogs.com/luminji    157个建议_勘误表 一:属性 属性和方法一样.也可以是virtual和abstract. 条款2:运行时常量(read ...

  8. django 2.0 xadmin 错误集锦

    转载 django 2.0 xadmin 错误集锦 2018-03-26 10:39:18 Snail0Li 阅读数 5188更多 分类专栏: python   1.django2.0把from dj ...

  9. ElasticSearch创建动态索引

    ElasticSearch创建动态索引 需求:某实例需要按照月份来维护,所以之前的“写死”索引的方式当然不行了.通过百度和看SpringDataElasticSearch官方文档,最后解决了这个问题. ...

  10. mybatis查询foreach使用

    1.mybatis传入map参数,map中包含list: List<FukaModel> fukaModels = price.getSchemaPrice().getFukaList() ...