我已经通过Windows任务计划程序每隔5分钟运行一个批处理文件,因为我遇到了很多问题,比如任务调度程序进入挂起状态而没有返回服务 - 我决定主要使用Windows服务因为我可以通过监控基础架构监控服务来调用恢复操作。
所以,我已经创建了一个服务来运行它。 该服务已经构建并安装,但是当我启动调用批处理文件并执行一组任务的服务时,它会一直循环。
批处理文件是这样的:
@echo off
:begin
cd c:\work\scripts\matm\
cscript //E:jscript c:\work\Scripts\matm\matm.js >> C:\work\Scripts\matm\matm.log;
cscript //E:vbscript c:\work\Scripts\matm\TruncateLog.vbs
>>c:\work\Scripts\matm\TruncateLog.log;
del C:\work\Scripts\matm\Logs\myserver\matm.csv
timeout 600
goto begin
从命令提示符运行时,批处理脚本运行正常,这就是我期望服务调用的内容。
我的想法是,一旦我们启动它,服务就会进入循环,并且永远不会出现。
我已在此Onstart部分上定义了对批处理文件的调用,如下所示
protected override void OnStart(string[] args)
我的问题是: -
a)如何确保服务在启动后不会“开始”运行批处理文件?如果我的构思错了,我怎么能每5分钟运行一次服务?
b)如何停止服务?或者,如果proc是我在onstart()函数中定义的Process类的新实例,我该如何停止服务。
感谢您的帮助和反馈。
此致 窗扇
答案 0 :(得分:0)
在包含错误恢复逻辑的C#中编写自定义包装器控制台应用程序。
使用Windows任务计划程序定期调用您的包装器应用程序。您可以将其配置为仅在尚未运行的情况下启动作业。你也可以杀掉现有的工作。
无需使用Windows服务。它们很复杂。
鉴于服务可能会帮助您解决问题,这就是我要做的事情:在OnStart
方法中,启动一个每10分钟计时一次的计时器并启动您的脚本。或者,启动一个在调用脚本之间休眠10分钟的线程。