Windows服务样例
下面是一个测试案例,服务名为Service1 黑色部分为自动生成,红色部分为我加进去的代码,绿色为我加入的注释,此案例没有其他意义,只是将记录插入到数据库中。
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Configuration.Install; using SysData.Db;
namespace serverTest { public class Service1 : System.ServiceProcess.ServiceBase { private System.Timers.Timer timer1; /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null;
public Service1() { // 该调用是 Windows.Forms 组件设计器所必需的。 InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化 }
// 进程的主入口点 static void Main() { System.ServiceProcess.ServiceBase[] ServicesToRun; // 同一进程中可以运行多个用户服务。若要将 //另一个服务添加到此进程,请更改下行 // 以创建另一个服务对象。例如, // // ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()}; // ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun); }
/// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// </summary> private void InitializeComponent() { this.timer1 = new System.Timers.Timer(); ((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit(); // // timer1 // this.timer1.Enabled = true; this.timer1.Interval = 30000; this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed); // // Service1 // this.ServiceName = "Service1"; ((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
}
/// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }
/// <summary> /// 设置具体的操作,以便服务可以执行它的工作。 /// </summary> protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 this.timer1.Enabled = true; this.LogMessage("Service Started"); } /// <summary> /// 停止此服务。 /// </summary> protected override void OnStop() { // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 this.timer1.Enabled = false; this.LogMessage("Service Stopped"); }
private void LogMessage(string xMsg) { try { //这里向数据库中插入一条信息为 xMsg的记录,下边是我调用事先写好的Db类添加记录的方法,您也可以使用其他办法来写入数据库。 //Db.QuerySQL("Insert into SysMsg (SysMsg) values ('"+xMsg+"')"); } catch { //不做任何操作 } }
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { LogMessage("检查服务运行!"); } } }
|