Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Quartz reschedule only works half

$
0
0

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


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>