WinTimer Author: baker Time: 25/11-30/11 Version: 1.0 平台: Windows xp. Visual Studio 2005 C#.NET/C++.NET .Net Framework 2.0 需求: 至少能计算一个月开机时长. 生成清单. 定时关机. 日均时长. 几种方案: (1).使用 系统事件日志. 由于无法判断是否为正常关机,需要定时刷新关机项. 需要开机自启动. (2). 自定义开机,关机日志文件. 可以采用 LOG,TXT,XML等,涉及字符串,XML等相关处理. 需要开机自启动. 定期刷新最后一个关机项. 计算: Start[n]为开机时间集合数组. End[n]为关机时间集合数组. Sum 为总时间. 两种计算公式 MSDN(来自VS2005 ) 演练:浏览事件日志、事件源和项 EventLog 组件 EventLog 注册表 Class: EventLog Registry Timer Control: EventLog Timer 问题: (1). 注册表中run , runonce ,runex三个启动项的区别. Run子项中定义了每次系统启动时都需要运行的程序,值项类型是字符串值,值项的名称是该运行程序的说明,值项的值是程序的名称;RunOnce子项中定义了只运行一次的程序,在该项下的值项中定义的程序运行起来后,该项下的值项就会被删除掉,这通常用于程序的安装过程;RunEx和RunOnceEx的作用和Run、RunOnce是一样的,是Run、RunOnce的扩充形式。 (2).多线程问题. System.Timers.Timer可以用于多线程, System.Windows.Forms.Timer用于UI而且不能用于多线程. 设计尽量使用前者. Baidu/google: C++(c#)读写注册表. 事件日志读写方法. Xml ………… 一天写程序,一天部署. 主程序界面. 10秒刷新一次记录. 总结: 通过此次练手,熟悉了Windows后台服务程序开发,系统事件日志构成和使用以及相应接口..NET程序的部署.

评论