支持回调或事件的商业.net任务调度程序组件

时间:2011-05-12 16:56:58

标签: c# components custom-controls scheduled-tasks job-scheduling

我知道quartz.net和codeplex任务调度程序管理的包装器项目。他们有一个相当不错的学习曲线和R& D阶段,以使其按照我们的规范工作。还包装他们&用我们的运行时安装程序配置是另一个问所以我们决定使用商业.NET任务调度程序。

我们的要求是:

  1. 必须在Win xp和Win 7(x86 + x64)
  2. 上受支持
  3. 触发触发器时必须提供回调或事件。
  4. psuedo代码示例:

    Trigger mytrigger = new Trigger(Daily, "8:00am", myCallbackDelegate);
    mytrigger.Start();
    

    每天8:00将调用myCallbackDelegate指向的方法。

    调度程序可以作为服务运行,也可以在每次启动引用它的应用程序时运行。 可以在表单上删除并配置为首选的.NET组件。

    请提供您的建议。我用Google搜索,找不到任何可以执行此基本功能的内容。感谢

1 个答案:

答案 0 :(得分:2)

我在WCF服务中使用了Quartz.Net并且它运行得非常好,它具有很大的灵活性,因为Cron触发器,基本上你可以解决大多数调度方案,当你安排触发器时,你需要指定实现IJob接口的类的类型。在我的例子中,Execute方法调用单例类/方法来完成它需要执行的工作。您可以将触发器配置为存储在RAM(易失性)或数据库中,我认为您可以指定自定义存储,但我没有这样做。

我在Quartz.NET中遇到的唯一问题是question,我也发布了解决方案,如果你有更具体的问题请告诉我。

这是Quartz.NET的一些配置基础知识,从教程

开始

为了实例化Scheduler,你可以这样做:

ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
_scheduler = schedulerFactory.GetScheduler();
_scheduler.Start()

为了安排工作,你会做这样的事情

JobDetail jobDetail = new JobDetail("UNIQUE NAME", null, typeof(NotepadJob));
SimpleTrigger triggerToReturn = new SimpleTrigger();
triggerToReturn.StartTimeUtc = DateTime.Now.ToUniversalTime();
_scheduler.ScheduleJob(jobDetail,trigger);

并且Job将是这样的

internal class NotepadJob : IJob
{
    //Open Notepad
}

如果使用SQL,您可以配置Config文件中的设置:

  <configSections>
      <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <\configSections>


<quartz>
  <add key="quartz.scheduler.instanceName" value="DefaultQuartzJobScheduler" />
  <add key="quartz.scheduler.instanceId" value="AUTO" />
  <add key="quartz.jobstore.clustered" value="true" />
  <add key="quartz.jobstore.clusterCheckinInterval" value="15000" />
  <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
  <add key="quartz.jobStore.useProperties" value="false" />
  <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
  <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
  <add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
  <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
  <add key="quartz.jobStore.misfireThreshold" value="60000" />
  <add key="quartz.jobStore.dataSource" value="default" />
  <add key="quartz.dataSource.default.connectionString" value="[CONNECTION STRING]" />
  <add key="quartz.dataSource.default.provider" value="SqlServer-20" />
  <add key="quartz.threadPool.threadCount" value="10" />
</quartz>

-Regards

相关问题