0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5

работа с таймером

21.07.2009, 19:24. Показов 2253. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Есть приложение, которое при нажатии кнопки копирует файл и обрабатывает его. Процесс нужно повторять через 15 – 20 секунд. При использовании Sleep или SetWaitableTimer приложение благополучно зависает. Допускаю, что где-то ошибся. Если другие способы реализации?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2009, 19:24
Ответы с готовыми решениями:

Работа с таймером
Доброго времени суток. Я в программировании новичек. прошу сильно не ругать. Излогаю задачу. У меня есть программа написанная на C++...

Работа с таймером
Имеется три эллипса, допустим что это мишень. Необходимо создать таймер, который по очередности будет выводить точки в средний эллипс и по...

Работа с таймером
Подскажите, как можно запустить функцию каждые 5 минут, при условии что она завершила работу( функция отработала и через 5 минут опять...

8
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 20:43
Зачем другие способы ?
Мы хотим видеть твой код.
0
0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5
22.07.2009, 00:12  [ТС]
Понял, вот функция к которой я обращаюсь
C++
1
2
3
4
5
6
7
8
HANDLE hTimer;
LARGE_INTEGER delay;
delay.QuadPart = -100000000;//10 sec
hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
SetWaitableTimer(hTimer, &delay, 20000, NULL, NULL, TRUE);
WaitForSingleObject(hTimer, INFINITE);
CancelWaitableTimer(hTimer);
CloseHandle(hTimer);
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
22.07.2009, 09:14
Посмотри этот пример:
http://msdn.microsoft.com/en-u... S.85).aspx
1
0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5
22.07.2009, 11:59  [ТС]
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Посмотри этот пример:
http://msdn.microsoft.com/en-u... S.85).aspx
Спасибо за ссылку.
Загнал этот код к себе - результат тот же. Все эти кода прекрасно работают в дос приложении. Напрашивается вывод - проблема не таймера, а программы.
Moжет есть пример реализации таймера в подобном приложении?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
22.07.2009, 13:09
Цитата Сообщение от dlav Посмотреть сообщение
Спасибо за ссылку.
Загнал этот код к себе - результат тот же. Все эти кода прекрасно работают в дос приложении. Напрашивается вывод - проблема не таймера, а программы.
Moжет есть пример реализации таймера в подобном приложении?
Я, честно говоря, работал с таймером немного подругому. Создавал таймер в конструкторе, перенаправлял событие этого таймера на мою функцию, и в этой функции все делал.
В твоем случае похоже, что просто не приходит событие от таймера, такое пока видел только если поток занят в это время другой функцией или это событие уже где то отлавливается, конечно я могу ошибаться.

Добавлено через 1 час 0 минут 23 секунды
Кстати а что зависает? Интерфейс приложения или не идет работа с файлом? Сколько раз ты повторяешь операцию с файлом?

Если ты выполняешь все это в главном потоке, то вполне понятся что интерфейс виснет. Либо создай поток и в нем запускай обращение к файлу, либо ассоциируй с таймером функцию, котороя будет обрабатывать события таймера.
0
0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5
22.07.2009, 13:20  [ТС]
Вполне может быть, что я не правильно работаю с таймером.
Можно подробнее, в конструкторе программы или отдельным классом.
Вызов таймера происходит из твоей функции?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
22.07.2009, 13:33
Цитата Сообщение от dlav Посмотреть сообщение
Вполне может быть, что я не правильно работаю с таймером.
Можно подробнее, в конструкторе программы или отдельным классом.
Вызов таймера происходит из твоей функции?
В описательном файле:
UINT_PTR m_nTimer;
afx_msg void OnTimer( UINT ttm );

В BEGIN_MESSAGE_MAP ставлю
ON_WM_TIMER()

В конструкторе главного окна:
Устанавливаю таймер
m_nTimer = SetTimer(1,10000, NULL); //10 секунд

void OnTimer( UINT ttm )
{
Выполняешь нужные действия.
}

Только учитывай что таймер работает только в главном окне почему то, в дочерние окна можно посылать это событие вручную, если нужно.
1
0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5
22.07.2009, 14:05  [ТС]
Виталик, ты прав. Я все запихул в главный процесс - прога работает, а интерфэйс виснет.
Благодарю за советы!!!!! Попробую их реализовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.07.2009, 14:05
Помогаю со студенческими работами здесь

Работа с таймером
нужно что бы на форме показывались часы, и поле где при заданом времени (когда оно настанет на часах) выводился лейбл3 на 5 секунд ( грубо...

Работа с таймером
В первые пробую таймер и сразу проблема суть: при появлении формы требуется если нажата кнопка 1 включается таймер скажем на 10 мин...

Работа с таймером
Добрый вечер. Не хватает базовых знаний как дёрнуть метод внешнего класса. есть функция в классе, в ней устанавливается таймер. ...

Работа с таймером
Суть задания такое: выводятся 3 вопроса из (label) и надо ответить на них в (edit) пользователь устанавливает время на вопрос, если...

Работа с таймером
Всем привет! Вообщем, нужно сделать так, чтобы при нажатие на кнопку, запускался таймер и, когда программа закончит свою работу, таймер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru