Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ internal class ProbeStatusPoller : IProbeStatusPoller
private Timer _pollerTimer;
private bool _isPolling;
private bool _isRecentlyForcedSchedule;
private bool _disposed;

private ProbeStatusPoller(DiagnosticsSink diagnosticsSink)
{
Expand Down Expand Up @@ -82,7 +83,10 @@ private void PausePollerTimer()
{
try
{
_pollerTimer?.Change(Timeout.Infinite, Timeout.Infinite);
if (!_disposed)
{
_pollerTimer?.Change(Timeout.Infinite, Timeout.Infinite);
}
}
catch (Exception ex)
{
Expand All @@ -94,9 +98,12 @@ private void ResumePollerTimer()
{
try
{
var waitPeriod = _isRecentlyForcedSchedule ? _shortPeriod : _longPeriod;
_pollerTimer?.Change(waitPeriod, waitPeriod);
_isRecentlyForcedSchedule = false;
if (!_disposed)
{
var waitPeriod = _isRecentlyForcedSchedule ? _shortPeriod : _longPeriod;
_pollerTimer?.Change(waitPeriod, waitPeriod);
_isRecentlyForcedSchedule = false;
}
}
catch (Exception ex)
{
Expand Down Expand Up @@ -172,7 +179,7 @@ private void ScheduleNextPollInOneSecond()
{
lock (_locker)
{
if (_isPolling)
if (_isPolling && !_disposed)
{
_pollerTimer?.Change(TimeSpan.FromSeconds(1), _shortPeriod);
_isRecentlyForcedSchedule = true;
Expand Down Expand Up @@ -226,7 +233,16 @@ public string[] GetBoundedProbes()

public void Dispose()
{
_pollerTimer?.Dispose();
lock (_locker)
{
if (_disposed)
{
return;
}

_disposed = true;
_pollerTimer?.Dispose();
}
}
}
}
Loading