I'm trying to reschedule my trigger (only got one in this project), in my C# Blazor app.
My problem is that the execution change works, but information such as interval and previous firetime are no longer displayed. If I start the trigger from the beginning, it gets this.
In Program.cs:
builder.Services.AddQuartz(c => { var sensorKey = new JobKey("sensorKey"); c.AddJob<SensorJob>(c => c.WithIdentity(sensorKey)); c.AddTrigger(opts => opts .ForJob(sensorKey) .WithIdentity("SensorJob-trigger") .WithSimpleSchedule(x => x .WithIntervalInSeconds(60) .RepeatForever()) .StartAt(DateTime.Now.AddSeconds(10))); });builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);In settings.razor where I try to change the interval:
@page "/settings"@using Quartz@inject ISchedulerFactory SchedulerFactory...
<h5 class="card-title">CronJob Informationen:</h5><p class="card-text"><strong>Next execute:</strong> @nextFireTime</p><p class="card-text"><strong>Last execute:</strong> @previousFireTime</p><p class="card-text"><strong>Interval:</strong> @repeatInterval</p><p class="card-text"><strong>Times triggered:</strong> @triggerDescription</p><p class="card-text"><strong>Status:</strong> @(triggerIsPaused ? "Inactiv" : "Activ")</p><button class="btn btn-primary" @onclick="PauseScheduler">Paus CronJob</button><button class="btn btn-danger" @onclick="ShowChangeIntervallModal">Change interval</button>...
protected override async Task OnInitializedAsync(){ _scheduler = await SchedulerFactory.GetScheduler(); var sensorTrigger = await _scheduler.GetTrigger(new TriggerKey("SensorJob-trigger")); if (sensorTrigger != null) { var triggerDetail = sensorTrigger as ISimpleTrigger; triggerIsPaused = await _scheduler.GetTriggerState(new TriggerKey("SensorJob-trigger")) == TriggerState.Paused ? true : false; nextFireTime = sensorTrigger.GetNextFireTimeUtc()?.LocalDateTime.ToString("g") ?? "N/A"; previousFireTime = sensorTrigger.GetPreviousFireTimeUtc()?.LocalDateTime.ToString("g") ?? "N/A"; repeatInterval = triggerDetail?.RepeatInterval.TotalHours.ToString("F2") +" Hours" ?? "N/A"; triggerDescription = triggerDetail?.TimesTriggered.ToString() ?? "N/A"; }}...
var currentTrigger = await _scheduler.GetTrigger(new TriggerKey("SensorJob-trigger"));if (currentTrigger != null){ var newTrigger = currentTrigger.GetTriggerBuilder() .WithCalendarIntervalSchedule(x => x.WithIntervalInHours(modalInputValue)) .Build(); await _scheduler.RescheduleJob(currentTrigger.Key, newTrigger);}After I called this code, the interval get changed, but information like previousFireTime and repeatInterval are no longer available.
Tried to force refresh the site