参考来源:http://blog.csdn.net/morewindows/article/details/6858216

参考来源: http://hi.baidu.com/tfantasy/item/aefa43d66b470a2b38f6f76c

剩下的都是我自己整理的。

在VS2012中新建一个Windows 服务的项目。然后在解决方案目录下找到Services1.cs,切换到代码视图。

这里我代码的主要工作就是开机自动启动该windows服务,每三秒往数据库中插入一条数据。

代码如下

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Linq;
  7. using System.ServiceProcess;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Data.SqlClient;
  11.  
  12. namespace stopvoice
  13. {
  14. public partial class Service1 : ServiceBase
  15. {
  16. System.Timers.Timer timer1; //计时器
  17. public Service1()
  18. {
  19. InitializeComponent();
  20. }
  21. protected override void OnStart(string[] args) //服务启动执行
  22. {
  23. timer1 = new System.Timers.Timer();
  24. timer1.Interval = ; //设置计时器事件间隔执行时间
  25. timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
  26. timer1.Enabled = true;
  27. }
  28. protected override void OnStop() //服务停止执行
  29. {
  30. this.timer1.Enabled = false;
  31. }
  32.  
  33. private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  34. {
  35. //执行SQL语句或其他操作
  36.  
  37. //连接数据库
  38. string SQLCONNECT = @"server=192.168.1.212;database=testdb;uid=sa;pwd=888888";
  39. SqlConnection conn = new SqlConnection(SQLCONNECT);
  40. conn.Open();
  41.  
  42. //通过SqlCommand 类的ExecuteNonQuery() 来返回受影响的行数。
  43. string SQLCOMMAND2 = "insert into tb1 values(999,999);";
  44. SqlCommand sqlcmd2 = new SqlCommand(SQLCOMMAND2, conn);
  45. //也可以用下面代替
  46. // sqlcmd.ConnectionString = SQLCOMMAND2
  47.  
  48. int nResult = sqlcmd2.ExecuteNonQuery();
  49. Console.WriteLine("受影响行数:", +nResult);
  50. Console.ReadLine();
  51.  
  52. conn.Close();
  53. }
  54.  
  55. }
  56. }

写完代码后在Service1.cs的设计界面右击,选择“添加安装程序”,会出现两个安装控件,将servicesInstaller1属性StartType设成Automatic就是开机自动启动,ServicesName就是在服务列表里的名称,可以自定义。servicesProcessInstaller1的属性设成LocalSystem。然后按F5 启动运行,会报错,提示Windows服务启动失败,说什么无法从命令行或调试器启动服务。

这个问题先不管他,但是在我们按F5的那一刹那,这个工程文件夹的Debug目录就生成了一个叫做Services1.exe的可执行文件了——我们的目的已经达成了。接下来我们要做的就是把这个程序安装到windows服务。

现在我们需要一个installutil的安装程序工具,我们可以在C:\Windows\Microsoft.NET\Framework\v4.0.30319中找到他(也许你也能在其他版本里找到它)MSDN告诉我使用 Visual Studio 命令提示符或 Windows SDK 命令提示符可以直接调用到这个Installutil.exe,我试了一下还是提示说这货不是内部或外部命令,直截了当,把上面的路径加入环境变量,然后进入我们的CMD窗口吧。切换到刚刚那个项目的Debug目录下,输入命令installutil services1.exe(当然也许你的可执行文件不叫services1,我只是提醒一下),此时你在命令行输入services.msc回车,会发现服务列表里多出了一个你的windows服务。将其启动后,每三秒就会在数据库中插入一条数据了。

实验结束后,别忘了用installutil  /u  services1.exe 的命令卸载掉这个服务哦,或是禁用服务。另外,如果更新了程序代码重新编译,有了新的services1.exe,只要路径没变,就不需要重新安装该服务的。

相同的功能完全可以在SQL Server的作业中进行,而且方便快捷,当然windows服务肯定有其他的优势,本文只是举个例子,所以不要用这个来板砖我了。

如果是高手,希望能解决Windows服务启动失败的报错问题,当我安装完毕windows服务以后,再次运行还是报一样的错。

windows 服务实例的更多相关文章

  1. 通过asp.net程序来控制自己开发的windows服务

    public ActionResult ListService() { //获取已经保存好的windows服务名称 IList<Model.ReportServicesInfoEnt> L ...

  2. C# Windows服务的创建、安装、调试

    一.查看已有的Windows服务 选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务 二 ...

  3. Windows服务安装、卸载、启动和关闭的管理器

    最近在重构公司的系统,把一些需要独立执行.并不需要人为关注的组件转换为Windows服务,Windows服务在使用的过程中有很多好处,相信这一点,就不用我多说了.但是每次都要建立Windows服务项目 ...

  4. 使用C#调试Windows服务模板项目

    Windows服务是非常强大的应用程序,可用于在backgorund中执行许多不同类型的任务.他们可以在不需要任何用户登录的情况下启动,并且可以使用除登录用户之外的其他用户帐户运行.但是,如果通过遵循 ...

  5. Windows Azure虚拟机和云服务实例计费方式更新

    在之前的Windows Azure计费账单中,A0,A1,A2,A3,A4系列的虚拟机(云服务实例)都是以A1为基准计费单位的,即: 虚拟机大小 计费单位(小时) A0 A1*0.25 A1 A1*1 ...

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

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

  7. C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)

       功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...

  8. Windows服务System权限下在当前用户桌面创建快捷方式C#实例程序

    Windows服务一般运行在System权限下,这样权限比较高,方便执行一些高权限的操作. 但是,Environment.GetFolderPath等函数获取的也是System用户下的,而不是当前用户 ...

  9. 使用C#创建及调用WCF完整实例 (Windows服务宿主)

    关于WCF的概念.原理.优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多. 这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此 ...

随机推荐

  1. Swift语言之命令模式(Command Pattern)实现

    今天遇到这样一个问题,我现在有一个整数数组,如: var numbers = [3, 7, 12, 9, 200] 现需要对其中的每一个数字都执行一系列相同的加减乘除操作,如对每一个数字都加5乘8再减 ...

  2. linux 报错 bash ‘/bin/sh: Syntax error: “(” unexpected

    今天用make 编译 蹦到 bash ‘/bin/sh: Syntax error: “(” unexpected 和 /bin/sh: [[: not found 这种莫名奇妙的错误 原因是是lin ...

  3. ios 使用AFN上传图片到服务器

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSe ...

  4. httpd 安装

    官网地址:http://httpd.apache.org/docs/2.4/ Download Download the latest release from http://httpd.apache ...

  5. Material Design学习

    前言: 最为一个用习惯了bootstrap的前端小菜,今天偶然听闻material design 这个从未听闻的前端框架,带着好奇开始了新的尝试,并将bootstrap跟material design ...

  6. ShowDoc部署手册

    ShowDoc介绍 关于ShowDoc的介绍,请访问:http://blog.star7th.com/2015/11/1816.html 环境依赖 1.必需环境 PHP5.3以上版本.php-gd库 ...

  7. Instant Complexity - POJ1472

    Instant Complexity Time Limit: 1000MS Memory Limit: 10000K Description Analyzing the run-time comple ...

  8. angular的$scope

    angularJS是一个MVVM的前端js框架. $scope的作用是angular向视图(html)传递数据的通道,它不负责处理和操作数据.也就是说要想向视图传递数据的话,必须定义$scope变量. ...

  9. 【前端】screenX/Y, clientX/Y, pageX/Y 的区别

    一图胜千言. 做了一个图:

  10. 【前端】【转】JS跨域问题总结

    详情见原博客:详解js跨域问题 概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源 ...