Windows任务调度程序在几秒钟内执行任务

我正在寻找Windows 7(开发机器)的开源/免费任务调度程序,这将允许我安排任务(HTTP请求到Web服务)每x秒运行一次。

我已经尝试了几个克隆克隆和Windows自己的任务计划,但似乎都不允许任务运行间隔less于60秒。 我错过了什么吗? 如果可能的话,我不想去写任何自定义脚本。

Solutions Collecting From Web of "Windows任务调度程序在几秒钟内执行任务"

可以为一个计划任务创建多个触发器。 如果您创建59个相同的触发器,并且每秒的偏移量为1秒,并且计划任务本身每分钟运行一次,那么您将结束计划的任务,以便每秒运行一次。

您可以使用GUI手动创建这59个触发器。 但是,创建这么多触发器的更快捷的方法是创建一个带有一个或两个触发器的任务,将其导出到文本文件,复制相应的行,相应地更改起始偏移量,然后重新导入文件。

我实际上能够做到这一点。

更新:似乎我复杂了。

在触发器中,它表示“每一个重复任务”,你实际上可以键入下拉“1分钟” (它不会让你输入时间以秒为单位)

我在Windows 7机器上做了这个。

而且,我显然没有把这个问题看得很清楚,因为提问者似乎已经能够把时间缩短到1分钟。 不过,我会在这里留下这个答案,因为它会为未来的读者解释如何把时间缩短到一分钟。

它看起来好像你不能让它在不到一分钟的时间间隔内运行。


我设置了一个触发器设置为“每日”的任务,每隔1天重复一次。 我检查“每个重复任务:”框。 将其设置为5分钟,持续1天

这使得任务每5分钟就会一次。

然后我导出了任务。 它导出到一个.xml文件。

Task > Triggers > CalendarTrigger > Repeition下面有以下标记: <Interval>PT5M</Interval>我将其从PT5M更改为PT1M 。 我重新导入了任务。

现在任务每1分钟运行一次。

我还没有完全测试过,而且我还没有尝试过不到一分钟,但是通过放置PT30S或者其他东西30秒可能是可能的。 我会试试看,并报告回来。 更新:您不能这样做,导入任务时会出错。 这是不可能的,这个时间不到1分钟。

整个触发器对我来说是这样的:

  <Triggers> <CalendarTrigger> <Repetition> <Interval>PT1M</Interval> <Duration>P1D</Duration> <StopAtDurationEnd>false</StopAtDurationEnd> </Repetition> <StartBoundary>2013-11-07T17:04:51.6062297</StartBoundary> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> 

我已经把这个Google搜索了,所以就我所能看到的答案来说,没有。 有很多商业解决方案,但没有开源/免费程序。

我最终用java编写了一个非常简单的定期HTTP GET调度程序 。 这可能是有用的,所以张贴链接到源guthub https://github.com/bjordan/simple_java_periodic_HTTP_scheduler

简短的解释:主程序启动一个服务过程,将保持活跃在内存中,并定期激活一项工作 – 做一些事情。

作业调度程序

  1. 创建一个扩展System.ServiceProcess.ServiceBase类的类
  2. 实现至少方法OnStart和OnStop
  3. 在OnStart中启动并使用Quartz.NET调度程序来定期运行任务

这是我的模板C#解决方案的一个Windows服务和一个Linux恶魔.NET /单声道https://github.com/mchudinov/ServiceDemon和一个简短的博客文&#x7AE0;

  class Program { public static void Main(string[] args) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceDemon.Service() }; ServiceBase.Run(ServicesToRun); } } public class Service : ServiceBase { static IScheduler Scheduler { get; set; } protected override void OnStart(string[] args) { StartScheduler(); StartMyJob(); } protected override void OnStop() { Scheduler.Shutdown(); } void StartScheduler() { ISchedulerFactory schedFact = new StdSchedulerFactory(); Scheduler = schedFact.GetScheduler(); Scheduler.Start(); } void StartMyJob() { var seconds = Int16.Parse(ConfigurationManager.AppSettings["MyJobSeconds"]); IJobDetail job = JobBuilder.Create<Jobs.MyJob>() .WithIdentity("MyJob", "group1") .UsingJobData("Param1", "Hello MyJob!") .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity("MyJobTrigger", "group1") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInSeconds(seconds).RepeatForever()) .Build(); Scheduler.ScheduleJob(job, trigger); } } public class MyJob : IJob { public void Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; log.Info(dataMap["Param1"]); } }