Почему Timer в одном приложении работает медленнее, чем в другом? - C#
Формулировка задачи:
Привет. Есть сервер и клиент, на сервере работает таймер, каждый 50 миллисекунд он увеличивает значение переменной на 1. Когда запускается клиент, то он запрашивает текущее значение у счетчика на сервере, далее присваивает это значение своему счетчику, и запускает таймер, который раз в 50 миллисекунд увеличивает значение счетчика на 1. Так почему, при нескольких минутах работы сервера и клиента, значение счетчика на клиенте обгоняет значение счетчика на сервере?
Один человек сказал мне, что работу таймеров нужно завязывать на тиках. Но я не могу понять нескольких вещей, ведь тики являются чем-то таким, что определяет точность работы всех других вещей, будь-то Thread.Sleep() или работа таймера, а сами тики зависят же от скорости процессора? или нет? Тогда как на одном компе, два таймера могут работать неодинаково?
Решение задачи: «Почему Timer в одном приложении работает медленнее, чем в другом?»
textual
Листинг программы
private Timer timer;
timer = new Timer(new TimerCallback(TimerWork));
void TimerWork(object source)
{
Communicator.timeStamp++;
}
void SetTimeStamp(IServerData data)
{
queue.Enqueue(() =>
{
GetTimeStampResult result = (GetTimeStampResult) data;
Communicator.timeStamp = result.TimeStamp;
timer.Change(0, 50);
});
}