powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Timer отстает
12 сообщений из 12, страница 1 из 1
Timer отстает
    #38540843
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
В программе встроен Timer который отсчитывает секунды, минуты, часы. Программа была написана несколько лет назад и под Windows XP все считалось правильно. Но сейчас под Windows 7 Timer отстает на ~1 минуту в час. Т.е. за день набегает до 10 минут.
С чем это может быть связано?
...
Рейтинг: 0 / 0
Timer отстает
    #38541519
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLДобрый день!
В программе встроен Timer который отсчитывает секунды, минуты, часы. Программа была написана несколько лет назад и под Windows XP все считалось правильно. Но сейчас под Windows 7 Timer отстает на ~1 минуту в час. Т.е. за день набегает до 10 минут.
С чем это может быть связано?
какой таймер используешь
...
Рейтинг: 0 / 0
Timer отстает
    #38541558
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLНо сейчас под Windows 7 Timer отстает на ~1 минуту в час.

И как считаешь отставание? И с какими параметрами таймер запущен?
...
Рейтинг: 0 / 0
Timer отстает
    #38541600
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,
использую таймер в комплекте vs2008
...
Рейтинг: 0 / 0
Timer отстает
    #38541608
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Секундомером я не замерял. Отставание видны в конце рабочего времени, когда после 8 часов отставание ~10 минут.
Параметр Timer Interval 1000- секунда.
...
Рейтинг: 0 / 0
Timer отстает
    #38541668
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLиспользую таймер в комплекте vs2008
В комплекте VS никакого таймера нет. Таймеры есть в .Net - System.Timer, System.Timers.Timer, System.Threading.Timer. Если подняпрячься, можно поработать и с Multimedia Timer
...
Рейтинг: 0 / 0
Timer отстает
    #38541673
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLС чем это может быть связано?С большой погрешностью используемого таймера?
...
Рейтинг: 0 / 0
Timer отстает
    #38541680
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLПараметр Timer Interval 1000- секунда.

Погрешность таймера (стандартного) около 10-15 мс.
Итого, в час 3600 срабатываний. Берем худший случай: 3600 * 15 мс = 54 секунды в час.

+ если вы используете однопоточный таймер, типа Forms.Timer - там итерации отсчитываются после завершения предыдущего. Так что добавьте время на обработку одной итерации. Если в ней обращение к БД, то там уже приличные тайминги будут
...
Рейтинг: 0 / 0
Timer отстает
    #38541682
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
под Windows XP все считалось правильно...
...
Рейтинг: 0 / 0
Timer отстает
    #38541692
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Да, спасибо. Я уже тоже об этом думал.
Но что повлияло на работу таймера под Windows7. Неужели под Windows XP время на обработку несущественно...
...
Рейтинг: 0 / 0
Timer отстает
    #38541710
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQLArm79,
Да, спасибо. Я уже тоже об этом думал.
Но что повлияло на работу таймера под Windows7. Неужели под Windows XP время на обработку несущественно...

Учитывая, что вы не колетесь ни типом таймера, ни содержанием обработки итерации, всё, что я скажу - гадание на кофейной гуще. А таланта гадания у меня маловато.

Вполне возможно, что на XP квантование потоков немного другое, или количество запущенных потоков в системе сильно меньше, или быстрее отрисовка на форме. Да мало ли что...

Вообще неправильно рассчитывать, что таймер будет давать точно выверенные интервалы хотя бы потому, что Windows - не реал-тайм система
...
Рейтинг: 0 / 0
Timer отстает
    #38542949
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...не зная потребности отсчёта времени...
если только получить время работы программы,
то стоит от текущего времени отнять фиксированное время начала работы программы...
таким образом не зависеть от тикетов и погрешностей...
например вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
        long runTicks = DateTime.Now.Ticks;
        System.Threading.Timer tmr = null;

        public Form1()
        {
            InitializeComponent();

            tmr = new System.Threading.Timer(new System.Threading.TimerCallback(TimerTicking), null, 0, 1000);
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (tmr != null)
            {
                tmr.Dispose();
            }
        }

        delegate void timerAllReady(string timeData);

        private void TimerTicking(object callBack)
        {
            TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - runTicks);
            this.Invoke(new timerAllReady(TimeWriting), new object[] { string.Concat(ts.TotalHours.ToString("00"), ":",
                                                                                     ts.Minutes.ToString("0#"), ":",
                                                                                     ts.Seconds.ToString("0#")) });
        }

        private void TimeWriting(string timeData)
        {
            textBox1.Text = timeData;
        }
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Timer отстает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]