void UpdatePeriods(uint period)
{
if (_periodsMap.ContainsKey(period)) return;
_periodsMap[period] = period;
_periodsVector.Add(period);
uint newSlotsCount = LCM(_periodsVector, 0);
if (newSlotsCount == 0)
newSlotsCount = period;
if (newSlotsCount == _slotsCount)return;
if (_pSlots.Count < newSlotsCount)
{
var newcount = newSlotsCount - _pSlots.Count;
_pSlots.AddRange(Enumerable.Range(0, (int) newcount).Select(x => new Dictionary<uint, TimerEvent>()));
}
else
{
_pSlots.RemoveRange((int) (_pSlots.Count-1-newSlotsCount),(int) newSlotsCount);
}
if (_slotsCount > 0)
{
for (var i = (int)_slotsCount; i < newSlotsCount; i++)
{
_pSlots[i] = _pSlots[(int)(i % _slotsCount)];
}
}
//_pSlots = pNewSlots;
_slotsCount = newSlotsCount;
}