美好的一天,
因此,首先,我发现了一些与此相关的问题,但不是我要寻找的问题
-Prevent Windows service manager from stopping a service c#
-Keep a Windows Service running without a timer
我真正在寻找的是一种使服务保持运行状态的方法,而不必在其中放置任何有趣的东西(蜘蛛的正常现象-实在太麻烦了)。
因此,要分解我正在设计的系统的结构,下面是一些背景信息:
有一个在后台运行的服务。该服务将保存以指定间隔执行处理的对象。这些对象是不同类型的流程(即报告,处理等),它们均以不同的间隔启动。这个想法是,将有一个应用程序使用ServiceBase.OnCustomCommand(int cmd)
将值传递给服务,其中这些命令将转换为“暂停”,“开始”,“重新启动”和其他对象查询,以确定处理是否成功/完成。某个队列。因此,换句话说,我正在并行运行“不同的处理器”,并且取决于进程,它允许处理/并行运行多个文件或任务。
我尝试运行此服务,但是即使我将CanStop
属性设置为false
,它也会每次自行停止。在调试中(使用编译器if
),我能够确定该服务永不崩溃,而是运行了一次,然后在OnStart
方法结束时,执行终止。
< br />
所以回到问题所在,如何允许该服务在后台继续运行而不必在服务内部设置废话计时器?
public override void OnStart(string[] args)
{
try {
double interval = double.Parse(ConfigurationManager.AppSettings["Interval"]);
fileProc = new FileProcessor(interval);
}
catch(Exception ex) {
fileProc = new FileProcessor(180000); // global variable
}
}
文件处理器
public FileProcessor(double interval)
{
pauseTimer = null;
runTimer = new System.Timers.Timer()
{
AutoReset = true,
Enabled = true,
Interval = interval
};
runTimer.Elapsed += FileProcessor_OnRun;
OnPause += FileProcessor_OnPause;
runTimer.Start();
IsRunning = true;
}
在此先感谢您的帮助。