前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目。有不便之处,就改用Windows服务实现。这篇就总结下,windows服务的编写,调试,安装卸载。

Windows服务介绍

Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。

创建Windows服务

创建好项目之后 --- >> 双击 Service1.cs  ---- >>  出现一个设计界面   ---->> 右键界面  --- >> 弹出对话框选择添加安装程序

上面一系列操作完成后,就可以对windows服务名称描述以及启动方式等进行修改。

[RunInstaller(true)]public class Installer1 : System.Configuration.Install.Installer{/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.Container components = null;private System.ServiceProcess.ServiceProcessInstaller spInstaller;private System.ServiceProcess.ServiceInstaller sInstaller;public Installer1(){// 该调用是设计器所必需的。InitializeComponent();// TODO: 在 InitComponent 调用后添加任何初始化}#region Component Designer generated code/// <summary>/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。/// </summary>private void InitializeComponent(){components = new System.ComponentModel.Container();// 创建ServiceProcessInstaller对象和ServiceInstaller对象this.spInstaller = new System.ServiceProcess.ServiceProcessInstaller();this.sInstaller = new System.ServiceProcess.ServiceInstaller();// 设定ServiceProcessInstaller对象的帐号、用户名和密码等信息this.spInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;this.spInstaller.Username = null;this.spInstaller.Password = null;// 设定服务名称this.sInstaller.ServiceName = "PmsDataUpdateService";//服务描述this.sInstaller.Description = "hi longhao !";// 设定服务的启动方式this.sInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic;this.Installers.AddRange(new System.Configuration.Install.Installer[] { this.spInstaller, this.sInstaller });}#endregion}

修改好后回头,写入自己想要的操作。Service1.cs出现设计界面,双击设计界面进入cs代码页。可以重写这些方法。

  protected override void OnStart(string[] args){//服务开启执行代码}protected override void OnStop(){//服务结束执行代码}protected override void OnPause(){//服务暂停执行代码base.OnPause();}protected override void OnContinue(){//服务恢复执行代码base.OnContinue();}protected override void OnShutdown(){//系统即将关闭执行代码base.OnShutdown();}

除此之外还有一个Program.cs文件:打开看下。

使得一个Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点。在Windows服务程序中,我们也是在Main()函数中完成这个操作的。首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法。然而Run()方法并不就开始了Windows服务程序,我们必须通过前面提到的服务控制管理器调用特定的控制功能来完成Windows服务程序的启动,也就是要等到该对象的OnStart()方法被调用时服务才真正开始运行。如果你想在一个Windows服务程序中同时启动多个服务,那么只要在Main()函数中定义多个ServiceBae类的子类的实例对象就可以了,方法就是创建一个ServiceBase类的数组对象,使得其中的每个对象对应于某个我们已预先定义好的服务。

 /// <summary>/// 应用程序的主入口点。/// </summary>static void Main(){ServiceBase[] ServicesToRun;ServicesToRun = new ServiceBase[] { new Service1(),new Service2() };ServiceBase.Run(ServicesToRun);}

如果你在你需要的函数里面写过你需要的方法后,点运行则不可运行。

安装卸载windows服务

1、安装需要用,这个小玩意可以在网上下载到的。

2、把他放到你编写好的服务程序/bin/Debug文件夹下。

3、打开

4、用命令读到你服务.exe文件夹下。

5、运行 installutil.exe

6、安装服务命令: installutil  yourservices.exe

7、卸载服务命令: installutil  /u  yourservices.exe

注意的是:安装跟卸载需要保证程序是一样的,没有变更过的,要不会提示卸载不干净。也就是在已安装过服务的时候,不要在vs中修改你的程序。

调试windows服务

保证你的服务已安装成功,且处于启动模式。

点调试--->> 附加到进程

即可。

注意的是:

打开任务管理器:结束进程。

转载于:https://www.cnblogs.com/xinhuawei/p/8675579.html

.NET Windows服务开发流程相关推荐

  1. windows服务开发(一、安装)

    最近由于工作需要,写了一个windows服务程序,有许多经验,我会陆续写出来. 请原谅我从安装谈起,因为我一直有一个误区:只要从System.ServiceProcess.ServiceBase继承一 ...

  2. Java微服务开发流程及详细案例

    微服务开发流程及详细案例 文章目录 微服务开发流程及详细案例 一. 微服务示例简介 二. IDEA创建父Maven工程及子项目 2.1 使用IDEA创建Maven项目 2.2创建子项目模块 2.3父项 ...

  3. 云服务器+windows iis系统+微信App平台程序+vb.net后台服务开发流程

    目录 1.准备工作 2.后台WEB服务开发 3.前端微信程序开发 最近学习了一下微信小程序的开发过程,过程比较简单,为此撰写一篇过程文章,以示纪念. 准备工作 发布系统,必须走如下流程: 服务器资源 ...

  4. windows 服务开发教程

    一. window服务是什么 当你单击"开始",执行"services.msc"命令.就会看见如下窗口.它显示的是当前操作系统中系统自带的服务或者第三方软件安装 ...

  5. WINDOWS服务开发

    1.查看系统日志:控制面板\所有控制面板项\管理工具\计算机管理 2.windows服务的实现: 资料:msdn->system service->services. http://msd ...

  6. .net Windows服务开发

    本文详细介绍Windows服务的开发与部署 一.服务项目搭建 1.新建一个Windows服务项目 然后会自动打开我们所添加服务的设计模式. 在解决方案管理器中右键Service1.cs,重命名为MyS ...

  7. C#windows服务开发

    一,SC命令创建和卸载windows服务 创建服务的命令格式: sc [servername] create Servicename [Optionname= Optionvalues] server ...

  8. 利用vs.net快速开发windows服务(总结)

    引用 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125527.html 在很多应用中需要做windows服务来操作数据库等操作,比如 ( ...

  9. vs2015开发Windows服务

    工作已经很久,时隔这么长时间写这篇文章是给自己以后做参考.也不至于以后长时间不写Windows服务而忘记整个开发过程.windows服务开发,基础的就不说了,直接上过程. 1.新建windows服务项 ...

最新文章

  1. [Leetcode] Wiggle Sort 摇摆排序
  2. android WebSocket 发送图片
  3. installation of igraph for python2.7
  4. Unable to update index for central http://repo1.maven.org/maven2/
  5. 十年程序员将Python分成7个阶段学习,你会发现Python真的很简单
  6. Threading.Timer用法
  7. 野生前端的数据结构基础练习(8)——图
  8. DotNetNuke 5 User's Guide: Get Your Website Up and Running
  9. jQuery.Validate.js验证大表单的优化
  10. time datetime的时间--python
  11. 反编译工具ILSpy下载
  12. 用C#对Illustrator矢量图形软件进行编程
  13. oracle数据库统计信息的重要性
  14. 秋意浓(2018.9.28)
  15. Virual Studio 2022 C++ CLR 中 模拟 Android Studo,Eclipse 的 LogCat
  16. python解压zip文件_python怎样压缩和解压缩ZIP文件(转)
  17. 2018数学建模国赛回顾(国一)
  18. [LGOJ5558]心上秋(倍增)
  19. [Windows系统]win7如何清理电脑C盘空间
  20. IT女孩又来总结了-2015年终总结

热门文章

  1. html框架集frame是啥意思,HTML框架集frameset和内嵌框架iframe
  2. 怎样查找共享文件_计算机操作系统学习笔记(五):文件管理
  3. expdp导出 schema_[转载]导入导出:impdpexpdp
  4. Python迭代列表
  5. gradle maven_Gradle vs Maven
  6. Android通知,PendingIntent示例
  7. java数组实现队列_使用数组在Java中进行队列实现
  8. TotalCommander增加回到桌面功能
  9. 如何编译Linux内核
  10. 2021年Java大厂面试必备面试题