Windows服务是否可以设置为在特定时间运行..?
示例
From 8:00 am to 5:00pm run process
From 5:00 pm to 8:00am run process
此过程可以每天,每周或一天运行..
请让我知道,你的想法
答案 0 :(得分:6)
通常情况下,如果这是您的要求,您可以通过编写简单的控制台应用程序,然后使用Windows Task Scheduler根据需要进行安排来获得更好的服务。
这将提供与服务相同的好处,但允许您在部署后更多地控制调度。
答案 1 :(得分:3)
我遇到了类似的情况,我必须开发一项服务,只有在特定情况下每天上午11:00到下午3:00的交易时间才能做某事。它将在一天的剩余时间内保持闲置状态。我正在分享我在案件中所做的事情。我不确定它对你有帮助,但我希望它能成为你。
两个保持开始时间和结束时间的变量
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
}
答案 2 :(得分:2)
有几种方法可以解决这个问题。从编码角度来看,最简单的方法是编写一个控制台应用程序,然后使用任务调度程序运行它。
Windows服务始终在运行,因此您希望服务休眠一段时间,唤醒检查当前时间是否在窗口中,然后是否执行。
这两种方法都有其优点和缺点,而且更多的是关于服务的作用。我不知道答案的一个问题是,如果安排任务的用户没有登录,计划任务是否会运行。这将是我对任务调度程序方法的最大担忧。
答案 3 :(得分:0)
您可以做的是使用Windows任务计划程序并创建启动服务的任务,以及停止服务的另一项任务。您需要做的就是创建一个批处理文件来启动和停止服务。
示例启动服务:
net start MyService
停止服务示例
net stop MyService