![]() |
|
![]() ![]() ![]() |
|
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
Здравствуйте. Возникла проблема с таймером ожидания. А именно не вызывается callback-функция
Прошу помощи ![]() -------------------- Подпись больше не нужна |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
а поток в прерываемое состояние входит?
(например, SleepEx) -------------------- qqq |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
maxim1000, нет
![]() Уже переделал, создаю таймер в потоке и жду (WaitForSingleObject). Еще такой вопрос, убивается ли таймер при завершении потока? Например через TerminateThread убью поток, а умрет ли таймер. Никаких глюков не возникнет? -------------------- Подпись больше не нужна |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
не думаю, надо закрыть его handle
автоматически закрывается он только по завершению процесса, не потока хотя лучше всё-таки на это не надеяться - спокойнее будет когда все handl'ы будут закрыты, и объект таймера удалится... Это сообщение отредактировал(а) maxim1000 - 16.3.2007, 16:03 -------------------- qqq |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
как же мне его закрыть если создается он в потоке.. хэндл можно конечно сохранять, но нужно ли если он сам закрывается при смерти потока
![]() -------------------- Подпись больше не нужна |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
ну, например, сразу после WaitForSingleObject, если он больше не нужен
не... при смерти _процесса_, т.е. если бдут создаваться и удаляться потоки, то таймеры будут накапливаться, так что стоит всё-таки удалить... -------------------- qqq |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
В том то и дело что поток может быть убит до наступления WaitForSingleObject. Блин, придется значит ручками эти таймеры апстенку
![]() Спасибо maxim1000, -------------------- Подпись больше не нужна |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
ну, на самом деле, можно удалять таймер и в другом потоке
сделать что-нибудь типа глобальной переменной и удалять в главном потоке, когда другой поток удалится кроме того, если действия повторяются, можно создать один раз таймер при старте или первом обращении и использовать, а при завершении программы закрыть до начала или завершения? если до начала, то можно придвинуть CreateWaitableTimer вплотную к WaitForSingleObject если поток может завершиться между началом и концом WaitForSingleObject, то тут надо уже конкретнее посмотреть - возможно, получится немного изменить схему работы... -------------------- qqq |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |