新建第一个windows服务(Windows Service)
首先,请原谅我是一个小白,一直到前段时间才在工作需要的情况下写了第一个windows服务。首先说一下为什么写这个windows服务吧,也就是什么需求要我来写这么一个东西。公司的项目中,需要一个预警功能(从数据库里取出需要的日期,在这个日期的前两天向相应的用户以短信的形式发出提醒)。因为不是一个日期,并且日期不是固定的。所以需要每一天都要在规定的时间向服务器发出请求,这需要后台自动执行的事件。我一直觉得这种功能很牛X的,就因为它们是自动执行的,哈哈。最后就用到了这么这个没有写过的windows服务。其实前面在做这个项目的时候,也遇到了类似的事情(小区居民回复物业系统发出的短信,比如短信投票),需要及时接受并且做出相应的回复或操作。为了解决这个问题我是做了一个定时器放在Global.asax文件里的。但是这中方法有个弊端,就是需要启动项目才能让计时器跑起来,而Windows Service就完美的解决了这个问题。只要在服务器上启动服务,不管项目是否运行,服务里的程序依然可以运行。啰啰嗦嗦的也不知道讲清楚没有,开始记录新建Windows Service的过程吧。
因为是新建第一个Windows Service,所以很艰难,一个字——累!因为周围的同事、同学因为工作原因基本上都很少接触这个东西。首先百度了方法,在这里也详细记录下来,请原谅,因为我脑袋的内存小,怕以后不知道怎么做,只能详细的记录了。哦,我用的是asp.net。
1.首先创建一个空的解决方案,主要是记录windows服务,所以asp.net里面什么也没有操作
2.新建windows服务
3.在windows服务内编写程序,首先切换到Service1的代码视图,从代码中两个程序已经自动生成的两个方法名字可以看出,OnStart()为开始,OnStop()为结束。其实还有暂停OnPause(),继续OnContinue()两个方法。
1 namespace WindowsService 2 { 3 public partial class Service1 : ServiceBase 4 { 5 public Service1() 6 { 7 InitializeComponent(); 8 } 9 10 //启动服务时执行 11 protected override void OnStart(string[] args) 12 { 13 } 14 //停止服务时执行 15 protected override void OnStop() 16 { 17 } 18 } 19 }
我把我的代码贴出来吧
1 namespace WinService 2 { 3 public partial class Service1 : ServiceBase 4 { 5 public Service1() 6 { 7 InitializeComponent(); 8 } 9 10 System.Timers.Timer timer = new System.Timers.Timer(); 11 common com = new common(); 12 SMS sms = new SMS(); 13 protected override void OnStart(string[] args) 14 { 15 timer.Enabled = true; 16 timer.Interval = 60000;//执行间隔时间,单位为毫秒 每分钟执行一次 17 timer.Start(); 18 timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer1_Elapsed); 19 } 20 21 protected override void OnStop() 22 { 23 timer.Enabled = false; 24 } 25 26 private void Timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 27 { 28 int intHour = e.SignalTime.Hour; //获得当前的小时 29 int intMinute = e.SignalTime.Minute; //获得当前的分钟 30 int intSecond = e.SignalTime.Second; //获得当前的秒 31 32 /*每分钟执行一次*/ 33 //更新投票结束状态 34 com.updateVoteState(); 35 //短信 36 sms.SMSVote(); 37 /*每分钟执行一次*/ 38 39 // 每天的10:30执行这个方法 40 int iHour = 10; 41 int iMinute = 30; 42 if (intHour == iHour && intMinute == iMinute ) 43 { 44 //预警功能 45 com.Warning(); 46 } 47 } 48 49 } 50 }
我在服务里面放了,每分钟执行的方法,有每天只需的方法。
4.要实现的功能都写好了,下面是添加服务的安装程序了。首先添加
在工具箱中找到serviceProcessInstaller和serviceInstaller,并添加到Installer.cs中
设置serviceInstaller
设置serviceProcessInstaller
5.前的都做好了,服务基本上就完成了,最后一步就是注册了。前边的在网上的各位大神的帮助下很顺利的完成了,就是在注册这里把我难到了,一直失败一直失败,弄到我都没有脾气了。百度新建windows服务,大部分后面的注册介绍的方法是这样的。
(1)打开命令提示
(2)输入installutil C:\Users\win10\Documents\Visual Studio 2012\Projects\WindowsService\bin\Debug\WindowsService.exe(安装)。
或者是 输入C:\Windows\Microsoft.NET\Framework\v4.0.30319(安装)
这些方法好像在win7上可以安装成功,可是我安装的是win10的就悲催了,怎么都不能实现。最后还是一个同学做过,告诉了我一种方法
(1)以管理员身份运行命令提示
(2)输入sc create test binPath="C:\Users\win10\Documents\Visual Studio 2012\Projects\WindowsService\bin\Debug\WindowsService.exe"(注册)
sc start test(启动)
sc start test (启动服务)
sc stop test (停止服务)
sc delete test (从注册表删除服务)
另外,服务的名称不知道是不是必须是解决方面的名字哦,我用其它的好像都不行,没有认真的去试这个。不知道为什么百度新建windows服务是就是没有找到这种注册服务的方法,百度sc create是就都出现了,所以在注册这里把弄的很狼狈。 下面这样一段是我在百度百科上看到的,可以参考一下
Sc create 是Windows DOS命令,用于创建Windows服务。适用于:Windows 7,Windows Server 2003,Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2,Windows Server 2008, Windows Server 2008 R2,Windows Vista。
转载于:https://www.cnblogs.com/chen0901/p/5529133.html
新建第一个windows服务(Windows Service)相关推荐
- 用C#创建Windows服务(Windows Services)
转载自 hyslove 最终编辑 hyslove Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是 ...
- C# windows服务:创建Windows服务(Windows Services)的一般步骤
C#创建Windows服务(Windows Services) Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Wind ...
- fileservice 类代码放哪里_一步步开发Windows服务(Windows Service)[转]
基于0起步来创建一个服务,做到简单的记录时间日志功能,其具体招行方法可自行添加. 1.创建服务 2.删除默认服务文件 3.添加自己的服务文件 4.更改启动项目 5. 引用 using System.T ...
- (转)创建Windows服务(Windows Services)N种方式总结
转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...
- *用C#创建Windows服务(Windows Services)
Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Win ...
- C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)(转载)...
系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...
- 如何删除windows服务zz 重新安装PostgreSQL时删除上次遗留service的方法
如何删除windows服务2006-10-10 11:09 作者:网络安全日志( www.nslog.cn ) 日期:2006/10/10 ( 转载请保留此申明) 一.什么是Windows服 ...
- 用.NET创建Windows服务
用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...
- 更上层楼:动态安装你的windows服务
前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...
- 利用vs.net快速开发windows服务(总结)
引用 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125527.html 在很多应用中需要做windows服务来操作数据库等操作,比如 ( ...
最新文章
- winrar目录穿越漏洞(更新经验)
- 一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
- JavaScript放头部不执行的情况(针对新手)
- linux 双网卡绑定模式,双网卡绑定的模式及操作步骤
- linux-IO之copy的实现
- 操作系统原理:读写者经典同步问题
- 也拿baidu搜索开玩笑!
- php recordarray,php5.5新数组函数array-column使用实例
- KVO(NSKeyValueObserving)、KVC(NSKeyValueCoding)作用浅谈
- Android中应用程序drawable图片资源占用内存的统计
- code collection 0.44版 发布
- postSQL使用触发器(trigger)分表
- JAVA版商城 B2B2C商城 多用户入驻商城 直播带货商城 新零售商城 o2o商城 拼团商城 分销商城 直播商城 短视频商城 VR商城 社交电商 分销商城 saas商城spring cloud商城
- Generator cannot target libraries that have not been migrated to null-safety.
- 拼多多如何撤销退店?万顿思教育
- L0/L1/L2/Lp/L∞范数的联系与区别
- B端产品经理产品心得(二)
- (云服务器+JQuery+JS+BootStrap+Navicat+AJAX+JavaScript)第一个前端小项目【面试】
- php 热敏打印,从PHP打印到POS打印机
- Fastadmin和Easywechat
热门文章
- android 的属性动画
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
- 交换机的基本原理配置(一)
- 如何使用HTTP压缩优化服务器
- hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
- 数据分析师 需求分析师_是什么让分析师出色?
- 乐高ev3 读取外部数据_数据就是新乐高
- 5938. 找出数组排序后的目标下标
- 怎样准备阿里技术面试_如何准备技术面试
- WeWork通过向225,000个社区征税来拼命地从Meetup.com榨取现金