windows 服务实例
参考来源:http://blog.csdn.net/morewindows/article/details/6858216
参考来源: http://hi.baidu.com/tfantasy/item/aefa43d66b470a2b38f6f76c
剩下的都是我自己整理的。
在VS2012中新建一个Windows 服务的项目。然后在解决方案目录下找到Services1.cs,切换到代码视图。
这里我代码的主要工作就是开机自动启动该windows服务,每三秒往数据库中插入一条数据。
代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; namespace stopvoice
{
public partial class Service1 : ServiceBase
{
System.Timers.Timer timer1; //计时器
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args) //服务启动执行
{
timer1 = new System.Timers.Timer();
timer1.Interval = ; //设置计时器事件间隔执行时间
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
timer1.Enabled = true;
}
protected override void OnStop() //服务停止执行
{
this.timer1.Enabled = false;
} private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作 //连接数据库
string SQLCONNECT = @"server=192.168.1.212;database=testdb;uid=sa;pwd=888888";
SqlConnection conn = new SqlConnection(SQLCONNECT);
conn.Open(); //通过SqlCommand 类的ExecuteNonQuery() 来返回受影响的行数。
string SQLCOMMAND2 = "insert into tb1 values(999,999);";
SqlCommand sqlcmd2 = new SqlCommand(SQLCOMMAND2, conn);
//也可以用下面代替
// sqlcmd.ConnectionString = SQLCOMMAND2 int nResult = sqlcmd2.ExecuteNonQuery();
Console.WriteLine("受影响行数:", +nResult);
Console.ReadLine(); conn.Close();
} }
}
写完代码后在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 服务实例的更多相关文章
- 通过asp.net程序来控制自己开发的windows服务
public ActionResult ListService() { //获取已经保存好的windows服务名称 IList<Model.ReportServicesInfoEnt> L ...
- C# Windows服务的创建、安装、调试
一.查看已有的Windows服务 选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务 二 ...
- Windows服务安装、卸载、启动和关闭的管理器
最近在重构公司的系统,把一些需要独立执行.并不需要人为关注的组件转换为Windows服务,Windows服务在使用的过程中有很多好处,相信这一点,就不用我多说了.但是每次都要建立Windows服务项目 ...
- 使用C#调试Windows服务模板项目
Windows服务是非常强大的应用程序,可用于在backgorund中执行许多不同类型的任务.他们可以在不需要任何用户登录的情况下启动,并且可以使用除登录用户之外的其他用户帐户运行.但是,如果通过遵循 ...
- Windows Azure虚拟机和云服务实例计费方式更新
在之前的Windows Azure计费账单中,A0,A1,A2,A3,A4系列的虚拟机(云服务实例)都是以A1为基准计费单位的,即: 虚拟机大小 计费单位(小时) A0 A1*0.25 A1 A1*1 ...
- C#开发Windows服务 附简单实例实现禁止QQ运行
本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...
- C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)
功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...
- Windows服务System权限下在当前用户桌面创建快捷方式C#实例程序
Windows服务一般运行在System权限下,这样权限比较高,方便执行一些高权限的操作. 但是,Environment.GetFolderPath等函数获取的也是System用户下的,而不是当前用户 ...
- 使用C#创建及调用WCF完整实例 (Windows服务宿主)
关于WCF的概念.原理.优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多. 这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此 ...
随机推荐
- Hi, there!
Wish you a happy day~我们一起玩WEB前端!^ ^
- spring boot servlet 注入
spring boot 注入servlet的方法是借助ServletRegistrationBean这个类 例子如下: 先建一个servlet import java.io.IOException; ...
- 从svn资源库目录checkout出maven项目方法
从svn资源库目录checkout出maven项目方法,如下图所示:
- 安装win7的那些事
由于win7系统只支持MBR格式的分区,如果强行将win7安装到UEFI分区方式的硬盘上将不能启动,所以,如果你要给别人的win8或者win10的OEM系统安装win7的话,记得先将重要数据备份出去, ...
- 93、持续集成以及Jenkins的知识介绍
持续集成是什么? }持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程.集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是 ...
- jquery.Huploadify 上传
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- install intel c/c++ compiler
通过在Intel官网上申请试用版本Intel® Parallel Studio XE Cluster Edition for Linux,会让你提交邮箱等信息,完成后会很快回复邮件,邮件会给出下载地址 ...
- [OC] 图片平铺
Tip: self.bgImg.image = [self.bgImg.image resizableImageWithCapInsets:UIEdgeInsetsMake(100, 40, 40, ...
- mysql的分区和分表
分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中. mysql支持的分区类型包括Range.List.Hash.Key,其中Range比较常用: RANGE分区:基于属于一个给定连续区 ...
- IE11 iframe alternative
<OBJECT classid=clsid:8856F961-340A-11D0-A96B-00C04FD705A2> <PARAM NAME=Location VALUE=http ...