用.net创建windows service的总结(C#代码)tojike(原作)
来源:互联网 发布:集体智慧编程 mobi 编辑:程序博客网 时间:2024/05/13 00:50
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
关键字 windows service
前言
net为创建windows service提供了专门的类库,结束了以前开发windows service窘迫的局面。你甚至可以不用添加一行代码,就可以用wizard生成一个windows service。
一、用wizard生成最基本的框架
此时,系统会为你生成一个框架,部分主要源代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.serviceProcess;
namespace windowsservice1
{
public class service1 : System.serviceProcess.serviceBase
{
private System.ComponentModel.Container components = null;
public service1()
{
InitializeComponent();
}
static void Main()
{
System.serviceProcess.serviceBase[] servicesToRun;
servicesToRun = new System.serviceProcess.serviceBase[] { new service1() };
System.serviceProcess.serviceBase.Run(servicesToRun);
}
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.serviceName = "service1";
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
}
有必要将其结构讲解一下。其中,System.serviceProcess就是关键所在,是引入windows service的地方。其中的OnStart()、OnStop()两个函数能够被windows服务管理器或者MMC调用,进行服务的启动、停止。
二、构建一个服务
该框架提供了一个空的服务,什么也不能做。所以我们要给它添加代码。比如,我想
做一个能够扫描数据库的服务,要求每次扫描完之后间隔一秒钟,然后继续扫描。
根据上面的要求,初步设想需要一个timer类,查命名空间,发现有二个不同的timer类,他们是:
1、 System.windows.Forms.Timer
2、 System.Timers.Timer
还有一个System.Threading,带有sleep方法
究竟该用哪个呢?
细查MSDN,会找到只有2适合,对于1来说,timer控制时间不够精确,对于线程来说,实现比较困难。
三、规划一下流程
基于该服务的要求,确定服务的流程如下:
为此,我们定义两个函数:_Scan(bool _judge)、_DO_Something()
然后引入System.Timers命名空间,并且定义一个_timer对象,这些代码如下:
1、using System.Timers; //引入System.Timers
2、public System.Timers.Timer _timer; //定义对象_timer
3、public bool _Scan(bool _judge)
{
//TODO
}
4、public void _DO_Something()
{
//TODO
}
然后在InitializeComponent()里边把_timer的Elapsed事件添加上,代码如下:
this._timer.Elapsed += new System.Timers.ElapsedEventHandler(this._timer_Elapsed);
定义_timer_Elapsed事件,代码如下:
private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
_timer.Interval=1000;
_timer.Enabled=false;
if(_Scan()==true)
{
_DO_Something();
}
_timer.Enabled=true;
}
最后,我们不要忘记添加windows service的installer,也是一个wizard,基本上不需要添加一行代码。然后编译,生成一个可执行文件。注意:因为这不是普通的可执行文件,所以不能通过双击实现运行,只能通过installutil YourserviceName、net START YourserviceName、net STOP YourserviceName、installutil/u YourserviceName来进行该服务的安装、启动、停止、暂停(可选)、卸载。最好是做成批处理文件,一劳永逸。^_^
net创建windows service的总结(C#代码)tojike(原作)';return true">
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
用.net创建windows service的总结 tojike(原作) 关键字 windows service
前言
net为创建windows service提供了专门的类库,结束了以前开发windows service窘迫的局面。你甚至可以不用添加一行代码,就可以用wizard生成一个windows service。
一、用wizard生成最基本的框架
此时,系统会为你生成一个框架,部分主要源代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.serviceProcess;
namespace windowsservice1
{
public class service1 : System.serviceProcess.serviceBase
{
private System.ComponentModel.Container components = null;
public service1()
{
InitializeComponent();
}
static void Main()
{
System.serviceProcess.serviceBase[] servicesToRun;
servicesToRun = new System.serviceProcess.serviceBase[] { new service1() };
System.serviceProcess.serviceBase.Run(servicesToRun);
}
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.serviceName = "service1";
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
}
有必要将其结构讲解一下。其中,System.serviceProcess就是关键所在,是引入windows service的地方。其中的OnStart()、OnStop()两个函数能够被windows服务管理器或者MMC调用,进行服务的启动、停止。
二、构建一个服务
该框架提供了一个空的服务,什么也不能做。所以我们要给它添加代码。比如,我想
做一个能够扫描数据库的服务,要求每次扫描完之后间隔一秒钟,然后继续扫描。
根据上面的要求,初步设想需要一个timer类,查命名空间,发现有二个不同的timer类,他们是:
1、 System.windows.Forms.Timer
2、 System.Timers.Timer
还有一个System.Threading,带有sleep方法
究竟该用哪个呢?
细查MSDN,会找到只有2适合,对于1来说,timer控制时间不够精确,对于线程来说,实现比较困难。
三、规划一下流程
基于该服务的要求,确定服务的流程如下:
为此,我们定义两个函数:_Scan(bool _judge)、_DO_Something()
然后引入System.Timers命名空间,并且定义一个_timer对象,这些代码如下:
1、using System.Timers; //引入System.Timers
2、public System.Timers.Timer _timer; //定义对象_timer
3、public bool _Scan(bool _judge)
{
//TODO
}
4、public void _DO_Something()
{
//TODO
}
然后在InitializeComponent()里边把_timer的Elapsed事件添加上,代码如下:
this._timer.Elapsed += new System.Timers.ElapsedEventHandler(this._timer_Elapsed);
定义_timer_Elapsed事件,代码如下:
private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
_timer.Interval=1000;
_timer.Enabled=false;
if(_Scan()==true)
{
_DO_Something();
}
_timer.Enabled=true;
}
最后,我们不要忘记添加windows service的installer,也是一个wizard,基本上不需要添加一行代码。然后编译,生成一个可执行文件。注意:因为这不是普通的可执行文件,所以不能通过双击实现运行,只能通过installutil YourserviceName、net START YourserviceName、net STOP YourserviceName、installutil/u YourserviceName来进行该服务的安装、启动、停止、暂停(可选)、卸载。最好是做成批处理文件,一劳永逸。^_^
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 用.net创建windows service的总结(C#代码)tojike(原作)
- 用.net创建windows service的总结
- 用.net创建windows service的总结
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- 用C#创建Windows Service
- .net/vs2005/c# 创建windows service/windows服务
- C#创建Windows Service
- c#创建Windows Service
- C#创建Windows Service
- C# 创建简单的Windows Service
- c#创建windows service示例以及在asp.net中如何控制windows service
- c#创建windows service示例以及在asp.net中如何控制windows service
- 用ASP.NET(VB版)创建WINDOWS 2000 SERVER站点
- REDIM陷阱(很多人都看过了吧)
- .NET 技术FAQ
- Connection Pooling
- 发布一个webservice供大家使用
- 用.net创建windows service的总结(C#代码)tojike(原作)
- 转业界评说:DotNet的进一步消息
- 在.NET里更好的创建XML文档
- 在.NET客户端程序中应用多线程
- 如何将Option Strict的设置保持为On(Add-In技术)
- VB.NET中的简单Web Service例程
- 在C#中调用VB.NET函数实例
- C#中使用Spread6.0全攻略
- 俺写的一个简单的字符串处理函数(可能会有用)