Windows服务初探
在Windows中,对于一些不需要显示图形界面的应用程序,我们可以把它做成Windows服务,让它在后台运行,例如一些文件监视服务等。一台电脑中的Windows服务可以在“计算机-管理-服务应用程序-服务”中看到,如图:
在这里,我们可以启动或停止一个服务。
创建服务:下面我们来创建一个文件监视功能的Windows服务。
用VS新建一个项目,模版选择“Windows服务”,在服务代码中会有两个方法:OnStart与OnStop,分别是服务的启动时的执行代码与服务停止时的执行代码。
public partial class WatchService : ServiceBase { public WatchService() { InitializeComponent(); } FileSystemWatcher watcher; /// <summary> /// 服务开始时执行代码 /// </summary> /// <param name="args"></param> protected override void OnStart( string [] args) { WriteLog( " 服务开始 " ); string path = @" D:\text " ; watcher = new FileSystemWatcher(path); // 监视新增文件 watcher.NotifyFilter = NotifyFilters.FileName; // 同时监视子目录 watcher.IncludeSubdirectories = true ; watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.EnableRaisingEvents = true ; } /// <summary> /// 服务停止时执行代码 /// </summary> protected override void OnStop() { WriteLog( " 服务停止 " ); } private void watcher_Changed( object sender, FileSystemEventArgs e) { try { WriteLog(e.Name + " " + e.ChangeType); } catch (Exception ex) { WriteLog(ex.ToString()); } } /// <summary> /// 写日志的方法 /// </summary> /// <param name="msg"></param> private void WriteLog( string msg) { string path = @" D:\log.txt " ; using (StreamWriter sw = new StreamWriter(path, true )) { sw.WriteLine(DateTime.Now.ToString() + " " + msg); } } }发布服务:
转到服务的界面窗体,点击右键,选择添加安装程序,会出现一个ProjectInstaller.cs。在其界面窗体中,选择serviceInstaller1,右键属性,可以设置服务启动方式,服务名称(服务名称不能与其它Windows服务名称重名),服务描述,服务显示名称等,如图:
另一个serviceProcessInstaller1的属性可以设置服务的运行账户,如图:
完成这些设置后,重新生成服务,打开VS2010命令行工具,以管理员身份运行,输入命令InstallUtil.exe+服务程序地址,如InstallUtil.exe “D:\Service\FileWatchDemo.exe”
提示安装完成后,就可以在服务管理中看到刚刚安装的服务了。
删除服务:InstallUtil.exe /u +"服务地址" InstallUtil.exe /u "D:\Service\FileWatchDemo.exe"
或
SC delete +服务名称,如 sc delete FileWatchService
标签: WinForm
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息