public void SyncForever(Func<TimeSpan> interval)
{
var lastHeartbeat = DateTime.MinValue;
while (true)
{
var currentTime = DateTime.Now;
if ((currentTime - lastHeartbeat).Minutes > 15)
{
_logger.DebugFormat("*heartbeat*; synchronization is {0}.", _syncEnabled() ? "active" : "paused");
lastHeartbeat = currentTime;
}
if (_syncEnabled())
{
SyncOnce();
}
OnPing();
Thread.Sleep(interval());
}
}