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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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