Wie kann ich meinen Job in Quartz.net stoppen 2.6.1. Wenn WithRepeatCount
fertig ist, läuft noch der Hintergrund, selbst wenn ich die Anwendung schließe. Ich meine, ich möchte scheduler.Shutdown()
ausführen, wenn die Zählung abgeschlossen ist.Wie man einen Job stoppt, wenn 'WithRepeatCount' in C getan wird
private void Start_Click(object sender, RoutedEventArgs e)
{
Trigger trigger = new Trigger();
trigger.StartTrigger();
}
private void Stop_Click(object sender, RoutedEventArgs e)
{
Trigger trigger = new Trigger();
trigger.StopTrigger();
}
[DisallowConcurrentExecution]/**/
class Job : IJob
{
public void Execute(IJobExecutionContext context)
{
IsConnected.CheckConnection();
}
}
class Trigger
{
private IScheduler Start()
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
sched.Start();
return sched;
}
private IScheduler Stop()
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
sched.Shutdown();
return sched;
}
public void StartTrigger()
{
IScheduler sched = Start();
IJobDetail Job = JobBuilder.Create<Job>().WithIdentity("Job", null).Build();
ISimpleTrigger TriggerJob =
(ISimpleTrigger)TriggerBuilder
.Create()
.WithIdentity("Job")
.StartAt(DateTime.UtcNow)
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.WithRepeatCount(4)
)
.Build();
sched.ScheduleJob(Job, TriggerJob);
sched.Start();
}
public void StopTrigger()
{
IScheduler sched = Stop();
sched.Shutdown();
}
}
Was meinen Sie läuft es im Hintergrund? Nehmen Sie einen Thread-Dump und sehen, dass der Quarz-Thread-Pool noch verfügbar ist? – Srinivas
Ich meine, wenn die Methode den Thread nie endend läuft und wenn ich die Anwendung (BTW WPF) schließe läuft es nur ich kann es im Task-Manager töten. – tpbafk
Es ist nicht wirklich klar, was Sie erreichen möchten. Wenn Sie nur viermal eine Methode aufrufen möchten, warum verwenden Sie dann nicht einfach eine einfache Schleife? Einen Job ein paar Mal direkt nach seinem Lauf anzurufen und dann den Scheduler anzuhalten, macht meiner Meinung nach keinen Sinn. Übrigens. Sie rufen 'sched.Start();' 2 mal in Ihrem Code auf. Bitte erläutern Sie, was Sie erreichen möchten. – Rabban