Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.07.2009
Сообщений: 5

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

21.07.2009, 19:24. Показов 2264. Ответов 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
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru