首先,请原谅我是一个小白,一直到前段时间才在工作需要的情况下写了第一个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)相关推荐

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

    转载自 hyslove 最终编辑 hyslove Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是 ...

  2. C# windows服务:创建Windows服务(Windows Services)的一般步骤

    C#创建Windows服务(Windows Services) Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Wind ...

  3. fileservice 类代码放哪里_一步步开发Windows服务(Windows Service)[转]

    基于0起步来创建一个服务,做到简单的记录时间日志功能,其具体招行方法可自行添加. 1.创建服务 2.删除默认服务文件 3.添加自己的服务文件 4.更改启动项目 5. 引用 using System.T ...

  4. (转)创建Windows服务(Windows Services)N种方式总结

    转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...

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

    Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Win ...

  6. C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)(转载)...

    系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...

  7. 如何删除windows服务zz 重新安装PostgreSQL时删除上次遗留service的方法

    如何删除windows服务2006-10-10 11:09     作者:网络安全日志( www.nslog.cn ) 日期:2006/10/10  ( 转载请保留此申明) 一.什么是Windows服 ...

  8. 用.NET创建Windows服务

    用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...

  9. 更上层楼:动态安装你的windows服务

    前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...

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

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

最新文章

  1. winrar目录穿越漏洞(更新经验)
  2. 一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
  3. JavaScript放头部不执行的情况(针对新手)
  4. linux 双网卡绑定模式,双网卡绑定的模式及操作步骤
  5. linux-IO之copy的实现
  6. 操作系统原理:读写者经典同步问题
  7. 也拿baidu搜索开玩笑!
  8. php recordarray,php5.5新数组函数array-column使用实例
  9. KVO(NSKeyValueObserving)、KVC(NSKeyValueCoding)作用浅谈
  10. Android中应用程序drawable图片资源占用内存的统计
  11. code collection 0.44版 发布
  12. postSQL使用触发器(trigger)分表
  13. JAVA版商城 B2B2C商城 多用户入驻商城 直播带货商城 新零售商城 o2o商城 拼团商城 分销商城 直播商城 短视频商城 VR商城 社交电商 分销商城 saas商城spring cloud商城
  14. Generator cannot target libraries that have not been migrated to null-safety.
  15. 拼多多如何撤销退店?万顿思教育
  16. L0/L1/L2/Lp/L∞范数的联系与区别
  17. B端产品经理产品心得(二)
  18. (云服务器+JQuery+JS+BootStrap+Navicat+AJAX+JavaScript)第一个前端小项目【面试】
  19. php 热敏打印,从PHP打印到POS打印机
  20. Fastadmin和Easywechat

热门文章

  1. android 的属性动画
  2. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
  3. 交换机的基本原理配置(一)
  4. 如何使用HTTP压缩优化服务器
  5. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  6. 数据分析师 需求分析师_是什么让分析师出色?
  7. 乐高ev3 读取外部数据_数据就是新乐高
  8. 5938. 找出数组排序后的目标下标
  9. 怎样准备阿里技术面试_如何准备技术面试
  10. WeWork通过向225,000个社区征税来拼命地从Meetup.com榨取现金