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:\Windows\Microsoft.NET\Framework\v4.0.30319\
@echo 服务安装中...
InstallUtil.exe C:\ProjectService\DemoService.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:\Windows\Microsoft.NET\Framework\v4.0.30319\
@echo 服务卸载中...
InstallUtil.exe /u C:\ProjectService\DemoService.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:\Windows\Microsoft.NET\Framework\v4.0.30319\
@echo 服务安装中...
InstallUtil.exe C:\ProjectService\DemoService.exe
@echo 服务安装完成.
goto begin
)
if %input%==2 (
set path=C:\Windows\System32\
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:\Windows\System32\
@echo 服务停止中...
net stop DemoService
net stop MonitorService
@echo 服务已经停止.
goto begin
)
if %input%==4 (
set path=C:\Windows\Microsoft.NET\Framework\v4.0.30319\
@echo 服务卸载中...
InstallUtil.exe /u C:\ProjectService\DemoService.exe
@echo 服务卸载完成.
goto begin
)
goto end
rem pause>null
rem echo.
rem 从begin标签出,再次运行
rem goto begin
:end
@echo **********************************************
完整代码:DemoService.rar