作者:朱先忠编译
摘要 本文将向你展示如何用C#开发一个Windows服务来记录系统使用情况。
每一个人都想知道他们每天在什么时间启动和关闭自己的系统,以及系统每天运行了多少时间。如果用一个DataGrid控件来显示系统启动、关闭及所消耗的时间将是一个不错的主意。
在本文中,我提供了一种方法来实现这一目标-使用C#开发一个Windows服务。其实,每个人都了解一点Windows服务。但是,为了介绍之目的,我仅尽可能少得解释一下Windows服务。然后,我们来讨论如何设计一个这样的应用程序。
一、 什么是Windows服务?
其实,Windows服务只是运行于后台的并不要求我们了解的一种进程而已。而且,它们的绝大部分并不要求用户交互。如果我们在"开始"菜单的"运行"命令行下输入"services.msc"并回车,那么我们就可以看到在我们当前的系统中运行的服务情况。其中,有一些服务是当系统启动时自动启动的。但是,也有一些服务必须在我们的手工启动下才能运行。
二、 Windows服务的优点
1. 能够自动运行。
2. 不要求用户交互。
3. 在后台运行。
一般情况下,Windows服务被用于耗费时间很多的进程中,例如备份数据库,等等。
现在,我们要设计一个Windows服务来实现记录你的系统启动和关闭需要的时间。我使用Visual Studio 2003设计了这个应用程序。
三、 设计Windows服务
第一步:
首先打开Visual Studio并且选择Visual C#工程。选择模板类型为Windows服务,并命名为Monitoring,如下图所示:
 选择模板类型为Windows服务 |
第二步:
按F7键打开代码窗口。然后,加入对System.IO命名空间的引用,以便把系统定时功能编写到一个文件中。下一步,用Monitoring一词替换所有出现的Service1一词。之后,转入设计模式(按键shift+F7)。选择Solution Explorer(按键Ctrl+Alt+L)。点击Service1.cs并且命名它为Monitoring.cs。
之后,转入代码窗口。在OnStart事件中加入下列代码,如下图所示:
 在OnStart事件中加入代码 |
在OnStart事件中实现的功能
首先,在c盘上创建一个xml文件,并命名为file1。然后,在这个文件中建立如下代码:
<?xml version="1.0" encoding="utf-8" standalone="no"?> <times> |
然后,关闭它。
我创建了一个服务,它能够在系统启动时自动启动并且记录下启动时间。当系统关闭时,它也关闭。而且,它会记录下关闭时间和系统中所花费的时间。
首先,我要创建一个StreamWriter来把系统启动时间写入file1.xml文件中。
在把代码复制到你的OnStart事件后,正好在Monitoring构造器的上面创建一个公共变量temp,如下图所示:
 创建一个公共变量temp |
此后,把这部分代码复制到你的代码窗口:
再把下面代码复制到OnStart事件中,如下图所示:
StreamWriter writer=File.AppendText("d:\file1.xml"); writer.Write("<time>"); writer.WriteLine("<Date> "+ (DateTime.Now.ToString("dd-MM-yy"))+"</Date>"); writer.WriteLine("<started> "+ (DateTime.Now.ToString("t"))+"</started>"); temp=DateTime.Now; writer.Close(); |
 复制到OnStart事件 |
[1] [2] [下一页]