• 自定义Windows服务并实施安装


    1、新建项目DemoService,并添加windows服务,命名DemoService

    2、添加代码 

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Diagnostics;
     6 using System.Linq;
     7 using System.ServiceProcess;
     8 using System.Text;
     9 using System.Configuration;
    10 using System.Windows.Forms;
    11 using System.Threading;
    12 
    13 namespace DemoService
    14 {
    15     public partial class DemoService : ServiceBase
    16     {
    17         private System.Timers.Timer timer1;
    18         public DemoService()
    19         {
    20             InitializeComponent();
    21             this.timer1 = new System.Timers.Timer();
    22             this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
    23         }
    24 
    25         protected override void OnStart(string[] args)
    26         {
    27             System.Threading.Thread.Sleep(10000);
    28             LogUtil.WriteLog("    服务开始启动");
    29             this.timer1.Interval = 1000 * Convert.ToInt32(ConfigurationManager.AppSettings["TimeSpan"]);
    30             this.timer1.Enabled = true;
    31             //this.timer1.Start();
    32             LogUtil.WriteLog("    服务启动完成");
    33         }
    34 
    35         protected override void OnStop()
    36         {
    37             LogUtil.WriteLog("    服务正在停止");
    38             this.timer1.Stop();
    39             this.timer1.Enabled = false;
    40             LogUtil.WriteLog("    服务已经停止");
    41         }
    42 
    43         private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    44         {
    45             LogUtil.WriteLog("    服务测试运行中...");
    46             Thread.Sleep(10000);
    47             MonitorService.ShouldRestart = true;
    48         }
    49     }
    50 }

    3、添加安装类,并配置如下:

     4、配置App.config:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <configuration>
     3     <appSettings>
     4         <!--重启超时时间 单位:秒-->
     5         <add key="RestartTimeOut" value="3600"/>
     6         <!--执行时间间隔 单位:秒-->
     7         <add key="TimeSpan" value="5"/>
     8         <add key="LogPath" value="c:\ProjectService\LOG\"/>
     9     </appSettings>
    10 </configuration>


    5、LogUtil.cs

    public class LogUtil
    {
    	public static void WriteLog(string error)
    	{
    		string fileName = DateTime.Now.ToString("yyyy-MM-dd") + "DomainServiceLog.txt";
    		using (System.IO.StreamWriter sw = new System.IO.StreamWriter(ConfigurationManager.AppSettings["LogPath"] + fileName, true))
    		{
    			sw.WriteLine("---------------------------------------------------------");
    			sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + error);
    		}
    	}
    
    }
    

     6、生成项目,执行如下脚本安装服务:

    @echo off
    set path=C:WindowsMicrosoft.NETFrameworkv4.0.30319
    
    @echo 服务安装中...
    
    InstallUtil.exe C:ProjectServiceDemoService.exe
    
    @echo 服务安装完成.
    
    pause
    

     执行如下脚本启动服务:

    @echo off
    
    if not exist C:\ProjectService\LOG\ (
    	md C:\ProjectService\LOG\
    )
    
    @echo 服务启动中...
    
    net start DemoService
    
    @echo 服务正在运行...
    
    pause
    

     执行如下脚本停止服务:

    @echo off
    
    @echo 服务停止中...
    
    net stop DemoService
    
    @echo 服务已经停止.
    
    pause
    

     执行如下脚本卸载服务:

    @echo off
    set path=C:WindowsMicrosoft.NETFrameworkv4.0.30319
    
    @echo 服务卸载中...
    
    InstallUtil.exe /u C:ProjectServiceDemoService.exe
    
    @echo 服务卸载完成.
    
    pause
    

     7、如果把命令写在一起,可以根据选择进行操作,命令如下:

    @echo off 
    @echo **********************************************
    
    rem 关闭自动输出
    
    :begin
    
    echo 请输入 1:安装服务 2:启动服务 3:停止服务 4:卸载服务 其他:退出
    rem 接收输入
    set input=
    set /p input=
    
    rem 输出得到的输入信息
    
    rem echo 您输入的字符串是:%input%
    if %input%==1 (
    	set path=C:WindowsMicrosoft.NETFrameworkv4.0.30319
    	@echo 服务安装中...
    	InstallUtil.exe C:ProjectServiceDemoService.exe
    	@echo 服务安装完成.
    	goto begin
    )
    if %input%==2 (
    	set path=C:WindowsSystem32
    	if not exist C:\ProjectService\LOG\ (
    		md C:\ProjectService\LOG\
    	)
    	@echo 服务启动中...
    	net start DemoService
    	net start MonitorService
    	@echo 服务正在运行...
    	goto begin
    )
    if %input%==3 (
    	set path=C:WindowsSystem32
    	@echo 服务停止中...
    	net stop DemoService
    	net stop MonitorService
    	@echo 服务已经停止.
    	goto begin
    )
    if %input%==4 (
    	set path=C:WindowsMicrosoft.NETFrameworkv4.0.30319
    	@echo 服务卸载中...
    	InstallUtil.exe /u C:ProjectServiceDemoService.exe
    	@echo 服务卸载完成.
    	goto begin
    )
    
    goto end
    
    rem pause>null
    
    rem echo.
    
    rem 从begin标签出,再次运行
    
    rem goto begin
    
    :end
    
    @echo **********************************************
    

    完整代码:DemoService.rar

  • 相关阅读:
    文件操作:根据现有类生成所需要的类
    Microsoft JScript 运行时错误: “”未定义
    未完成
    WPF模拟雷达界面效果图
    WebClient模拟网页提交表单
    201319
    Delphi中的InStrRev函数(倒找文本)
    利用IDhttp实现图片下载
    白话解释哈希表
    整理的Delphi常用字符串函数
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4800725.html
Copyright © 2020-2023  润新知