diff --git a/Pilz.Net/Api/ApiServer.cs b/Pilz.Net/Api/ApiServer.cs
index 5a8f006..2fcfe44 100644
--- a/Pilz.Net/Api/ApiServer.cs
+++ b/Pilz.Net/Api/ApiServer.cs
@@ -66,6 +66,18 @@ public class ApiServer : IApiServer
{
ApiUrl = apiUrl;
this.httpListener = httpListener ?? CreateDefaultHttpListener();
+ Jobs.BeforeExecute += Jobs_BeforeExecute;
+ Jobs.AfterExecute += Jobs_AfterExecute;
+ }
+
+ private void Jobs_BeforeExecute(object? sender, EventArgs e)
+ {
+ ResetManager();
+ }
+
+ private void Jobs_AfterExecute(object? sender, EventArgs e)
+ {
+ ResetManager();
}
private IDataManager GetManager()
diff --git a/Pilz.Net/Pilz.Net.csproj b/Pilz.Net/Pilz.Net.csproj
index 55c7c40..8beab34 100644
--- a/Pilz.Net/Pilz.Net.csproj
+++ b/Pilz.Net/Pilz.Net.csproj
@@ -8,7 +8,7 @@
- 2.10.0
+ 2.10.1
diff --git a/Pilz/Jobs/JobCenter.cs b/Pilz/Jobs/JobCenter.cs
index d766dc5..ae1e77e 100644
--- a/Pilz/Jobs/JobCenter.cs
+++ b/Pilz/Jobs/JobCenter.cs
@@ -2,6 +2,9 @@
public class JobCenter
{
+ public event EventHandler BeforeExecute;
+ public event EventHandler AfterExecute;
+
private readonly HashSet jobs = [];
private readonly System.Timers.Timer timerRepeat = new()
{
@@ -21,12 +24,19 @@ public class JobCenter
private void TimerRepeat_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
var now = DateTime.Now;
- var jobs = this.jobs.Where(n => n.LastExecution + n.Interval > now);
-
- foreach (var job in jobs)
+ var jobs = this.jobs.Where(n => n.LastExecution + n.Interval < now);
+
+ if (jobs.Any())
{
- job.LastExecution = now;
- job.Execute(new(this));
+ BeforeExecute?.Invoke(this, EventArgs.Empty);
+
+ foreach (var job in jobs)
+ {
+ job.LastExecution = now;
+ job.Execute(new(this));
+ }
+
+ AfterExecute?.Invoke(this, EventArgs.Empty);
}
if (Enabled)
diff --git a/Pilz/Pilz.csproj b/Pilz/Pilz.csproj
index c808db8..00c9d20 100644
--- a/Pilz/Pilz.csproj
+++ b/Pilz/Pilz.csproj
@@ -5,7 +5,7 @@
latest
enable
annotations
- 2.6.1
+ 2.6.2