Question

Je suis au courant de Quartz.net et le projet Wrapper géré du planificateur de tâches Codépleplex.Ils ont une courbe d'apprentissage plutôt décente et une phase de recherche de R & D pour que cela fonctionne selon nos spécifications.Les emballages et la configuration de notre installation d'exécution sont également un autre problème.Nous avons donc décidé d'aller avec un planificateur de tâches commercial .NET.

Nos exigences sont:

  1. doit être pris en charge sur Win XP et Win 7 (x86 + x64)
  2. doit fournir un rappel ou un événement lorsque la gâchette est tirée.

    Exemple de code PSEDEO:

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

    Chaque jour à 8h00 La méthode pointée par MyCallBackDelegate sera appelée.

    Le planificateur peut fonctionner en tant que service ou chaque fois que l'application qui les références est démarrée. Composant .NET pouvant être supprimé sur le formulaire et configuré préféré.

    Veuillez fournir vos recommandations.J'ai googlé et je ne trouve rien qui fera cette fonctionnalité de base.merci

Était-ce utile?

La solution

J'ai utilisé quartz.net dans un service de WCF et il a très bien fonctionné, il a beaucoup de flexibilité en raison des déclencheurs de cron, vous pouvez fondamentalement définir la plupart des scénarios de la planification, lorsque vous planifiez un déclencheur, vous. Besoin de spécifier un type d'une classe qui implémente l'interface IJOB. Dans mon cas, les méthodes d'exécution appellent une classe / méthode singleton pour faire le travail nécessaire à effectuer. Vous pouvez configurer les déclencheurs à stocker sur RAM (volatiles) ou une base de données, je pense que vous pouvez spécifier un stockage personnalisé, mais je ne vais pas aller de la sorte.

Le seul problème que j'ai eu avec Quartz.net est décrit dans ce Question , j'ai aussi posté la solution que j'ai élaboré si vous avez des questions plus spécifiques, merci de me le faire savoir.

Ceci est une partie des bases de la configuration de quartz.net mostly suivie du tutoriel

Pour instantifier le planificateur, vous faites quelque chose comme ceci:

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

Pour la planification d'un emploi, vous ferez quelque chose comme ça

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

Et le travail sera quelque chose comme ça

internal class NotepadJob : IJob
{
    //Open Notepad
}

Si wokring avec SQL, vous pouvez configurer les paramètres comme suit sur le fichier de configuration:

  <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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top