C#开发Window service服务
今天是刚到上海做了第一个项目。
哈哈,也不是什么大项目那就。就是一个widow service服务项目。
此项目的作用是记录服务的启动和关闭时间。并把他们存入数据库中。
好了开始记录我的收获了。。。。。。。
大家可以看看这遍文章"利用vs.net快速开发windows服务"。。。。。。。
http://www.i282.cn/dev/net/2006-11-4/YuanChuang-LiYong-vsnet-KuaiSuKaiFa-windows-BiWu-c-rkrx02597.htm
首先说明下创建过程吧
1.新建项目 -> 从项目模板列表当中选择Windows服务
2.设计器以设计模式打开它。
3.建立一个测试数据库,在测试数据库中执行以下SQL语句。
CREATE TABLE [ServiceRunState] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[RunTimes] [datetime] NULL ,------ 启动服务时间
[StopTimes] [datetime] NULL ------ 结束服务时间
) ON [PRIMARY]
GO
4.现在我们切换到代码编辑页,然后输入数据库操作类。
///
/// 数据库操作类型
///
/// int型.输入"1"开启服务,"0"停止服务
public void OpDateBase(int state)
{
string Filde ="";
if(state == 1)
{
Filde = "RunTimes";// 启动字段
}
else
{
Filde = "StopTimes";// 停止字段
}
try
{
SqlConnection conn=new SqlConnection("Data Source=127.0.0.1;Database=TestOrderService;UID=zyb;Password=zyb;");
SqlCommand comm=new SqlCommand("insert into ServiceRunState(" + Filde + ") values(getdate())",conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
catch(System.Data.SqlClient.SqlException ee)
{
//this.label1.Text = ee.ToString();
}
}
说明:
本例中启动和停止都是添加新数据,所以启动和停止服务都是各生成一条记录。
5.此步开始为关键步骤了。将这个代码页切换到设计视图
6.在设计视图页右击鼠标右键,在右键菜单中选择“添加安装程序”
7.这时会多出一个叫ProjectInstaller.cs文件。
8.双击ProjectInstaller.cs文件,进入ProjectInstaller设计视图页,是不是看到serviceProcessInstaller1和serviceInstaller1组件。这两个组件大家去看资料吧,我还没查看作用。。
9.设置serviceInstaller1组件的属性:
1) ServiceName = MySampleService
2) StartType = Automatic (开机自动运行)说明:Manual为手动启动,Disabled为禁用。
10.设置serviceProcessInstaller1组件的属性 Account = LocalSystem这里设置运行账户为本地系统
11.执行命令“InstallUtil.exe 这里写你的项目路径\bin\Debug\MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面).如果是以Release模式编译则在bin\Release\MyWindowsService.exe)
12.右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
13. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
14. 右击你的服务选择启动就可以启动你的服务了
你把服务重复启动或停止,,你看看是不是数据库中增加了数据。。
需要注意的是:
如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,如果路径发生了变化,需要先卸载这个服务InstallUtil.exe /u参数,然后再重新安装这个服务,不能直接安装。还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个EventLog,通过WriteEntry()来写日志。
关于怎么用windows服务来做一个远程服务可以看一下http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp
(责任编辑:文得莉工作室) |