在指定时间运行windows服务
本文关键字:windows 服务 运行 定时间 | 更新日期: 2023-09-27 18:13:23
windows服务可以设置为在特定时间运行吗?
例子From 8:00 am to 5:00pm run process
From 5:00 pm to 8:00am run process
这个过程可以每天、每周或一天运行。
请让我知道,你的想法
通常,如果这是您的需求,您最好编写一个简单的控制台应用程序,然后使用Windows任务调度程序根据需要调度它。
这将提供与服务相同的好处,但允许您在部署后对调度进行更多控制。
我遇到了一个类似的情况,我必须开发一个只在交易时间(每天上午11点到下午3点)做一些事情的服务。这一天剩下的时间里,它就一直闲置着。我在分享我在我的案例中所做的。我不确定它是否对你有帮助,但我希望它会有帮助。
维持起始时间和结束时间的两个变量
TimeSpan StartingTime = new TimeSpan(
Int32.Parse(
ConfigurationManager
.AppSettings["StartingTimeHour"]),
Int32.Parse(
ConfigurationManager
.AppSettings["StartingTimeMinute"]), 0);
TimeSpan EndingTime = new TimeSpan(
Int32.Parse(
ConfigurationManager
.AppSettings["EndingTimeHour"]),
Int32.Parse(
ConfigurationManager
.AppSettings["EndingTimeMinute"]), 0);
//Starting time and Ending time may change in future. So I used app.config
//instead of fixing them to (11,0,0) and (15,0,0) respectively
检查是否为交易时间的方法
public bool TradingTime()
{
TimeSpan CurrentTime = DateTime.Now.TimeOfDay;
return ((CurrentTime > StartingTime) && (CurrentTime < EndingTime));
}
然后需要检查时间并根据时间执行一些操作:
while (TradingTime())
{
//do whatever required
}
有几种方法可以做到这一点。从编码的角度来看,最简单的方法是编写一个控制台应用程序,然后使用任务调度程序运行它。
一个windows服务总是在运行,所以你会希望你的服务休眠一段时间,醒来检查当前时间是否在窗口中,如果是,然后执行。
两种方法都有各自的优点和缺点,更重要的是服务的功能。我不知道答案的一个问题是,如果计划任务的用户没有登录,计划任务是否会运行。这是我对任务调度器方法最大的担忧。
你能做的是使用Windows任务调度程序并创建一个任务来启动服务,另一个任务来停止服务。你所需要做的就是创建一个批处理文件来启动和停止服务。
示例Start Service:
net start MyService
停止服务示例
net stop MyService