System.Timer в ядре .net неправильно отслеживает времяC#

Место общения программистов C#
Anonymous
System.Timer в ядре .net неправильно отслеживает время

Сообщение Anonymous »

У меня есть этот фрагмент кода:

Код: Выделить всё

public void StartTimer(string roomName)
{
var roomTimer = GetRoomTimer(roomName);
var room = GetRoom(roomName);

if (roomTimer == null)
{
//Create a timer with a two second interval.
roomTimer = new System.Timers.Timer(2000);

roomTimer.Elapsed += (sender, e) => MyElapsedMethod(sender, e, room.Item2);
roomTimer.AutoReset = true;
roomTimer.Enabled = true;
_rooms[roomName].Timer = roomTimer;
}
else
{
roomTimer.Start();
roomTimer.AutoReset = true;
roomTimer.Elapsed += (sender, e) => MyElapsedMethod(sender, e, room.Item2);
_rooms[roomName].Timer = roomTimer;
}
}

public void StopTimer(string roomName)
{
var roomTimer = GetRoomTimer(roomName);
roomTimer.Stop();
}

private static void MyElapsedMethod(Object source, ElapsedEventArgs e, TwilioRoomDto room)
{
room.Time += room.Timer.Interval;
}
Когда таймер запускается, а затем останавливается и снова перезапускается, он не отслеживает время так точно. Промахивается почти вдвое. Почему это так, я держу в словаре пропуски времени.

Подробнее здесь: https://stackoverflow.com/questions/721 ... -correctly

Вернуться в «C#»