fix: only create poll timer if it doesn't exist

This commit is contained in:
Andrew Welker
2025-04-11 15:14:28 -05:00
parent 428f9f34bd
commit 7a4224e52a

View File

@@ -40,6 +40,7 @@ namespace PepperDash.Essentials.Core
long PollTime; long PollTime;
CTimer PollTimer; CTimer PollTimer;
CCriticalSection pollCriticalSection = new CCriticalSection();
string PollString; string PollString;
Action PollAction; Action PollAction;
@@ -177,14 +178,24 @@ namespace PepperDash.Essentials.Core
// Start polling and set status to unknow and let poll result update the status to IsOk when a response is received // Start polling and set status to unknow and let poll result update the status to IsOk when a response is received
Status = MonitorStatus.StatusUnknown; Status = MonitorStatus.StatusUnknown;
Start(); Start();
BeginPolling();
} }
} }
void BeginPolling() void BeginPolling()
{ {
Poll(); try{
PollTimer = new CTimer(o => Poll(), null, PollTime, PollTime); pollCriticalSection.Enter();
if (PollTimer != null)
{
return;
}
PollTimer = new CTimer(o => Poll(), null, 0, PollTime);
}
finally{
pollCriticalSection.Leave();
}
} }
public override void Stop() public override void Stop()