[当我不使用启动参数启动服务时,他会在启动后立即停止。当我通过参数int时,它将永远在后台运行。
此服务只是定期删除一些旧文件。我尝试传递默认值,但没有成功。
protected override void OnStart(string[] args)
{
bool parseOk = false;
base.OnStart(args);
parseOk = int.TryParse(args[0], out dayLimit);
if (!parseOk) dayLimit = 2;
// Update the service state to Running.
ServiceStatus serviceStatus = new ServiceStatus()
{
dwCurrentState = ServiceState.SERVICE_RUNNING
};
SetServiceStatus(this.ServiceHandle, ref serviceStatus);
// Set up a timer that triggers every minute.
System.Timers.Timer timer = new System.Timers.Timer
{
Interval = 3600000 // 3600000 milisecond = 3600 seconds = 1hrs
};
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.TimerSuppress_Tick);
timer.Start();
}
我在他停止时收到的消息是:'本地计算机上的服务已声明并停止。如果其他服务或程序未使用某些服务,则会自动停止。为什么停止?我可以修复它并在默认值和开始参数之间进行选择吗?
如果不传递任何参数,则会引发异常
parseOk = int.TryParse(args[0], out dayLimit);
因为args [0]不存在。
尝试使用
if(args.Length > 0)
{
parseOk = int.TryParse(args[0], out dayLimit);
}