Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Timer в службе не запускается / 11 сообщений из 11, страница 1 из 1
27.07.2004, 18:49
    #32624134
змейка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
В обычной программе все работает, а вот в службе

Устанавливаю таймер:

double sec=10;
ActionTimerId = (UINT) SetTimer(NULL,0,(UINT)(sec * 1000), ActionHandler);
Вроди все нормально, ActionTimerId присваивается некоторое большое значение

А вот обработчик

VOID CALLBACK ActionHandler(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{

}


не хочет не в какую вызыватся, вообще ... может из за того что в службе HWND hwnd вообще на прочь отсутствует .... тогда каким образом периодически анализировать ... чего либо .... ????
...
Рейтинг: 0 / 0
28.07.2004, 09:21
    #32624492
Их есть у меня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
SetTimer опирается на сообщения окну,
так что совершенно верно, низя его использовать в сервисе.

К циклу со Sleep() нет отвращения?
...
Рейтинг: 0 / 0
28.07.2004, 10:12
    #32624551
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
авторSetTimer опирается на сообщения окну
Это вроде если не указан обработчик...

авторВроди все нормально, ActionTimerId присваивается некоторое большое значение
Значит прописался.

авторVOID CALLBACK ActionHandler(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{

}
не хочет не в какую вызыватся,

Странно,... на первой скобке дебагом не ловится?
У меня есть код где таймер задан на NULL и работает.

А после SetTime, GetLastError() чё-нить сказал?
...
Рейтинг: 0 / 0
28.07.2004, 10:48
    #32624623
Их есть у меня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
ыщо раз: для SetTimer() НЕОБХОДМО окно приложения,
ибо SetTimer есть не что иное, как перехват WM_TIMER,
а как его без окна схватить?


P.S. он и в консольном по идее работать не должен
...
Рейтинг: 0 / 0
28.07.2004, 11:08
    #32624670
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
автора как его без окна схватить?

Например по таблице, которая заполняется по SetTimer с пустым окно.

Окно - NULL?
Если нет, шлём окну WM_TIMER
Если да, зовём умолчательную функцию таймера, которая проверяет индекс в таблице, если находит, зовёт соответствующую функцию, если нет, сама работает.

У меня есть таймер с пустым окном, работающий.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.10.2006, 23:52
    #34089783
sever221mar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
ЗмейкаВ обычной программе все работает, а вот в службе

Устанавливаю таймер:

double sec=10;
ActionTimerId = (UINT) SetTimer(NULL,0,(UINT)(sec * 1000), ActionHandler);
Вроди все нормально, ActionTimerId присваивается некоторое большое значение

А вот обработчик

VOID CALLBACK ActionHandler(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{

}


не хочет не в какую вызыватся, вообще ... может из за того что в службе HWND hwnd вообще на прочь отсутствует .... тогда каким образом периодически анализировать ... чего либо .... ????

Ошибка скорее всего с отсутсвием взаимодействия службы с рабочим столом. установи эту опцию в типе службы: SERVICE_INTERACTIVE_PROCESS если не ошибаюсь.
...
Рейтинг: 0 / 0
30.10.2006, 22:24
    #34092514
ska
ska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
ЗмейкаА вот обработчик
не хочет не в какую вызыватся, вообще ... может из за того что в службе HWND hwnd вообще на прочь отсутствует .... тогда каким образом периодически анализировать ... чего либо .... ????
Используйте CreateWaitableTimer и иже с ними - проще будет.
А так это вопрос того что делает Ваш сервис (т.е. цикл по мессагам есть ?)
...
Рейтинг: 0 / 0
30.10.2006, 23:40
    #34092607
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
Для того, чтобы таймер отработал, нужно иметь цикл обработки сообщений, поскольку вызов функции таймера производится в DefWindowProc.
...
Рейтинг: 0 / 0
30.10.2006, 23:43
    #34092610
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
Их есть у меняыщо раз: для SetTimer() НЕОБХОДМО окно приложения,
ибо SetTimer есть не что иное, как перехват WM_TIMER,
а как его без окна схватить?


Не, таймер можно и без окна обрабатывать, но реально вся обработка таймера идет через посылку сообщения и обработку его в цикле обработки сообщения. Нужно использовать другие механизмы, как уже сказали, или напр. Sleep().
...
Рейтинг: 0 / 0
31.10.2006, 11:12
    #34093381
KGP
KGP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
MasterZiv
Их есть у меняыщо раз: для SetTimer() НЕОБХОДМО окно приложения,
ибо SetTimer есть не что иное, как перехват WM_TIMER,
а как его без окна схватить?


Не, таймер можно и без окна обрабатывать, но реально вся обработка таймера идет через посылку сообщения и обработку его в цикле обработки сообщения. Нужно использовать другие механизмы, как уже сказали, или напр. Sleep().

Все нормально работает в службе
Sleep() - вы этого чего?

имхо - может у вас проблема в том, что вы рано таймер запускаете
как я делал:
создавал класс, в нем метод Start(), Stop() с статик экземпляром ... (в деструкторе вызываю Stop())

class C...Module : public CAtlServiceModuleT< C...Module, IDS_SERVICENAME >
{
public :
DECLARE_LIBID(LIBID_..._srvLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_PAYMENT_SRV, "{A860A1D9-45C4-491E-9EC6-A7CFD04BB6C4}")
HRESULT InitializeSecurity() throw()
{
theTimer.Start();
return S_OK;
}
};

void CALLBACK myReceiving(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
theTimer.Stop();
...
}

void myTimer::Start(void)
{
Stop();
...
NumberTimer = ::SetTimer(NULL, 0, Elapse, myReceiving);
}
...
Рейтинг: 0 / 0
31.10.2006, 11:44
    #34093559
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в службе не запускается
http://www.naughter.com/waitabletimer.html
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Timer в службе не запускается / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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