17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
|
|
1 | |
Почему Timer в одном приложении работает медленнее, чем в другом?16.03.2014, 22:23. Показов 1495. Ответов 9
Метки нет Все метки)
(
Привет. Есть сервер и клиент, на сервере работает таймер, каждый 50 миллисекунд он увеличивает значение переменной на 1. Когда запускается клиент, то он запрашивает текущее значение у счетчика на сервере, далее присваивает это значение своему счетчику, и запускает таймер, который раз в 50 миллисекунд увеличивает значение счетчика на 1. Так почему, при нескольких минутах работы сервера и клиента, значение счетчика на клиенте обгоняет значение счетчика на сервере?
Один человек сказал мне, что работу таймеров нужно завязывать на тиках. Но я не могу понять нескольких вещей, ведь тики являются чем-то таким, что определяет точность работы всех других вещей, будь-то Thread.Sleep() или работа таймера, а сами тики зависят же от скорости процессора? или нет? Тогда как на одном компе, два таймера могут работать неодинаково?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
16.03.2014, 22:23 | |
Ответы с готовыми решениями:
9
Почему Excel 2013 работает в 25 раз медленнее чем 2010
Почему на одном компьютере работает , а на другом - нет? |
20 / 20 / 3
Регистрация: 15.02.2013
Сообщений: 59
|
|
17.03.2014, 14:50 | 2 |
lawliet93, 1 вариант из остальных 843 937: на «сервере» процесс выполняется синхронно, на «клиенте» — асинхронно.
0
|
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
|
|
17.03.2014, 15:08 [ТС] | 3 |
JonMagon, нет-нет, на сервере все асинхронно, как и на клиенте, я уже нашел причину, но это совсем другой вопрос. Смотрите, ведь все времяисчесление завязано на тиках, правильно? Счетчик тиков это - Stopwatch, чтобы получить количество тиков за одну секунду, нужно получить значение Stopwatch.frequency и вот тут вся проблема. Я вывел это значение на сервере, и мне показало 3.124.980, потом я создал обычный консольный проект в VS и мне показало это самое число, но вот на клиенте мне показало число 10.000.000. И вот это полностю объясняет, почему счетчик на сервере такой медленный. Вопрос состоит вот в чем, как изменить это значение на сервере, чтобы оно было равным 10.000.000 ?
0
|
Почетный модератор
![]() |
|
17.03.2014, 15:10 | 4 |
Может быть чем-то поможет: Acquiring high-resolution time stamps
0
|
![]() 16929 / 12506 / 3286
Регистрация: 17.09.2011
Сообщений: 20,743
|
|
17.03.2014, 15:49 | 5 |
Зависит от того, что за таймеры используются и как организована работа с ними.
А так вам правильно сказали: завязывайте работу таймеров на тиках. Точнее, не работу таймеров, а инкремент счетчика.
0
|
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
|
|
17.03.2014, 15:53 [ТС] | 6 |
kolorotur, так а если тиков на одну секунду приходится разное количество на сервере и клиенте? при чем это все на одном ПК
0
|
![]() 16929 / 12506 / 3286
Регистрация: 17.09.2011
Сообщений: 20,743
|
|
17.03.2014, 16:01 | 7 |
lawliet93, говорю же, зависит от того, как у вас организована работа с таймерами на стороне клиента и сервера.
Какой класс для таймера используется там и там? Как выглядит метод обработки тика?
0
|
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
|
|||||||||||
17.03.2014, 16:16 [ТС] | 8 | ||||||||||
kolorotur, вот серверная часть
0
|
![]() 16929 / 12506 / 3286
Регистрация: 17.09.2011
Сообщений: 20,743
|
|
17.03.2014, 16:26 | 9 |
В качестве эксперимента замените вызов Invoke на BeginInvoke в методе ShowTimer на стороне сервера и посмотрите на результат.
0
|
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
|
|
17.03.2014, 16:38 [ТС] | 10 |
kolorotur, ну, то же самое, вот значение счетчиков вначале
разница = 27, а вот через минутку где-то разница большая
0
|
17.03.2014, 16:38 | |
Помогаю со студенческими работами здесь
10
Datagridview! Почему в одном варианте работает, а в другом нет?! Почему скрипт работает на одном и том же домене, а на другом не хочет? На одном компьютере запрос работает а на другом нет. В чём может быть проблема? Почему на одном проце видюха работает, а на другом нет? У обоих процов сокет lga 1155 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |