Je suis nouveau sur quartz.net. Je veux construire une application basée sur une fenêtre simple qui a planifié la tâche. Supposons que j'ai 4 ans, il tâche de début et de fin Exemplequartz.net exemple simple selon l'heure donnée
Breakfast ; 8:00;8:30
Lunch;13:00;13:30
dinner;19:30;20:00
Maintenant, je veux quand je clique sur le bouton à 8:00 une boîte de message apparaît avec un texte « petit-déjeuner commencé !!! » à 8h30 du matin encore une boîte de message devrait apparaître avec un texte comme "Fin de petit déjeuner !!!" etc.
J'avais traversé tutorial. Mais confondre comment procéder. Quelqu'un peut m'aider?
EDIT
Est-il possible d'utiliser un emploi et on déclenche pour cela?
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
for (int i = 0; i < listBox1.Items.Count; i++)
{
string[] strArr = Regex.Split(listBox1.Items[i].ToString(), @";", RegexOptions.Multiline);
// define the job and tie it to our HelloJob class
IJobDetail jobStart = JobBuilder.Create<HelloJob>()
.WithIdentity("job" + i, "group1") // name "myJob", group "group1"
.StoreDurably()
.UsingJobData("jobSays", strArr[0].ToUpper().Trim() + " " + "starts")
.Build();
string[] ArrStart = strArr[1].Trim().Split(':');
ITrigger triggerstart = TriggerBuilder.Create()
.WithIdentity("trigger" + i, "group1")
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(Convert.ToInt32(ArrStart[0]), Convert.ToInt32(ArrStart[1])))
// .WithSimpleSchedule(x => x.WithMisfireHandlingInstructionIgnoreMisfires()
.ForJob(jobStart)
.Build();
// .WithSchedule(CronScheduleBuilder.CronSchedule("0 4 06 1/1 * ? *"))
// Tell quartz to schedule the job using our trigger
scheduler.ScheduleJob(jobStart, triggerstart);
scheduler.Start();
string[] Arrend = strArr[2].Trim().Split(':');
IJobDetail jobend = JobBuilder.Create<HelloJob>()
.WithIdentity("job1" + i, "group1")
.StoreDurably()
.UsingJobData("jobSays", strArr[0].ToUpper().Trim() + " " + "end")
.Build();
ITrigger triggerend = TriggerBuilder.Create()
.WithIdentity("trigger1" + i, "group1")
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(Convert.ToInt32(Arrend[0]), Convert.ToInt32(Arrend[1])))
// .WithSimpleSchedule(x => x.WithMisfireHandlingInstructionIgnoreMisfires()
.ForJob(jobend)
.Build();
scheduler.ScheduleJob(jobend, triggerend);
scheduler.Start();
}
}
catch (SchedulerException se)
{
Console.WriteLine("Scheduler Exception : " + se);
}
}
public class HelloJob : IJob
{
public void Execute(IJobExecutionContext context)
{
JobKey key = context.JobDetail.Key;
JobDataMap dataMap = context.JobDetail.JobDataMap;
string jobSays = dataMap.GetString("jobSays");
MessageBox.Show(jobSays);
}
}
Vous pouvez utiliser un travail, mais vous avez besoin de plusieurs déclencheurs. – Rabban
@Rabban ok. mais si nous voulons passer un paramètre pour ce tigger particulier que comment cela serait fait comme dans mon exemple ci-dessus je passe un nom de tâche à la et j'obtiens le temps de la méthode Execute –