在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host
利用vs.net我们可以在几分钟之内建立其windows服务,非常简单
下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer)
--注意事项:【推荐】【血的教训】C# windows服务程序中的Timer控件的问题
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,产生事件“private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e){...}”方法,然后在里面写一些数据库操作的代码,比如
代码
SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
附:也可写在记事本中
代码
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("My Sample Service: " + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
8. 将这个服务程序切换到设计视图
9. 右击设计视图选择“添加安装程序”
10. 切换到刚被添加的ProjectInstaller的设计视图
11. 设置serviceInstaller1组件的属性:
1) ServiceName = My Sample Service
2) StartType = Automatic (开机自动运行)
12. 设置serviceProcessInstaller1组件的属性 Account = LocalSystem
13.让服务运行时,开始让Timer控件起作用,即在OnStart事件中添加timer1.Start();
{
timer1.Start();
}
14. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
15. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)
--安装技巧:把“InstallUtil.exe ”文件拷贝到“MyWindowsService.exe”所在的目录,用鼠标把“MyWindowsService.exe”托放到“MyWindowsService.exe”图标上即可快速安装,就不用向上面在命令控制台中输入相关命令。
16. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
17. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
18. 右击你的服务选择启动就可以启动你的服务了
看看数据库是不是一秒多了5个记录啊
需要注意的是:
如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,
如果路径发生了变化,需要先卸载这个服务InstallUtil.exe -u参数,然后再重新安装这个服务,不能直接安装。
还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个EventLog,通过WriteEntry()来写日志。
关于怎么用windows服务来做一个远程服务可以看一下
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp
Feedback
logfile=e:\windowserver\bin\debug\mywindowserver.InstallLog
…………
已完成事务处理安装
安装失败,已执行回滚。
知道的大虾告诉我一下
回复 引用
#24楼 58.19.17.* 2007-09-20 10:45 小谭 [未注册用户]
l.exe NewsEexpireWindowsService.exe
Microsoft (R) .NET Framework Installation utility Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.
在初始化安装时发生异常:
System.BadImageFormatException:文件“NewsEexpireWindowsService.exe”的格式无效
。。
回复 引用 查看