2010-11-09 4 views
0

J'avais écrit un service de Windows dans C# .NET qui se déclenche sur tous les miniutes ... Je veux envoyer un courrier à mon directeur chaque mois sur la date de xyz par exemple .... cette tâche devrait être répétée sur tous les mois à la même date ... Alors quelqu'un peut-il me dire comment faire ça ..? Je veux dire que le bloc de code que je vais écrire doit être exécuté à la même date de chaque mois ...schedular dans le service de Windows

+3

Y at-il une raison pour laquelle vous n'utilisez pas simplement le planificateur de tâches Windows pour cela? –

Répondre

2

Cela vous donnera un TimeSpan du nombre de jours/heures/minutes/etc. jusqu'à ce que le premier jour du mois suivant:

TimeSpan ts = DateTime.Now.AddDays(
    (DateTime.Now.Day - 1) * -1).AddMonths(1) - DateTime.Now; 

Utilisez DateTime.Today pour minuit le premier jour du mois suivant.

Vous pouvez l'utiliser pour définir l'intervalle d'une minuterie.

1

cela ressemble à l'utilisation parfaite pour quartz.net

var schedulerFactory = new StdSchedulerFactory(); 
var scheduler = schedulerFactory.GetScheduler(); 
scheduler.Start(); 

var jobDetail = new JobDetail("myJob", null, typeof (MyFooImplementation)); // MyFooImplementation needs to impelement IJob 
var trigger = TriggerUtils.MakeMonthlyTrigger("myJobTrigger", 1, 0, 0); 
scheduler.ScheduleJob(jobDetail, trigger); 

plus d'infos sur .MakeMonthlyTrigger se trouve here

sinon j'obtenu pour les fenêtres planificateur de tâches ... la bonne voie ancienne:

Questions connexes