Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

база и сервис NT   Найти похожие ветки 

 
deadman   (2003-08-19 16:40) [0]

программа выполнена как служба NT.при запуске подключается через ADO к базе.тут все нормально. затем периодически срабатывает таймер и в обработчике некоторые записи в базе изменяются. однако, иногда метод Post завешивает сервис :( т.е. он корректно останавливается, но таймер больше не срабатывает и вообще прога застревает точно в этом месте. в чем дело?


 
sniknik ©   (2003-08-19 16:52) [1]

а зачем таймер? в смысле это же он же в отдельном потоке работает, а это дополнитеньные вероятные глюки. все тоже (обработку через определенное время) можно детать используя sleep() в отработчике сервиса.
+ используй try exсept end; чтобы не вылетало, и ошибки по исключению пиши куда нибудь, будеш точно знать что случилось.


 
Dred2k ©   (2003-08-19 17:07) [2]

> sniknik © (19.08.03 16:52) [1]

TTimer работает по событию WM_TIMER, подменяя WndProc, выполняет свой обработчик в главной нити приложения. Вот какой таймер автор использует - ? (есть и другие, TRxTimer, к примеру - он на нитке работает). А дело тут, по-ходу, в исключении. try .. except заделать - хороший совет.


 
deadman   (2003-08-20 14:08) [3]

хм. по-моему никакого исключения не возникает. просто на строке
Blah.Post прога застревает и все!


 
sniknik ©   (2003-08-20 14:17) [4]

> Blah.Post прога застревает и все!
а... ну тогда конечно. ты знаеш, что на Blah.Post (именно в таком сочетании) влияют фазы луны, размер обуви программиста и погода в Зимбабве? если нет то зачем сел за программирование?


 
Fiend ©   (2003-08-20 16:48) [5]

То deadman:
если такая уверенность что именно на посте и именно "застревает".
то возникает вопрос: а что за база?
если серверный вариант, то может быть возхникают блокировки???


 
deadman   (2003-08-22 13:20) [6]

обращения к базе идут из обработчика таймера. создавал я его так
timer:=TTimer1.create(nil);
timer.enabled:=true;

run-time что бы не было глюков с потоками. объекты ADOConnection, ADODataset "как обычно". может проблема тут? как правильно все это дело оформить?


 
sniknik ©   (2003-08-22 14:05) [7]

> создавал я его так
...
> run-time что бы не было глюков с потоками.
как создавал неважно, важно где (что для него является главным потоком)

> объекты ADOConnection, ADODataset "как обычно".
что значит "как обычно"? компоненты на на форму положил? для кого обычно?

> может проблема тут? как правильно все это дело оформить?
было такое подозрение. в первом посте высказал вместе с решением (как считаю правильным).


 
Dred2k ©   (2003-08-22 18:05) [8]

А если в обработчике пусть даже неявно вызывается Application.ProcessMessages? Тогда его таймер повторно может вызвать...

procedure Txxx.OnTimer1(Sender : TObject);
begin
(Sender as TTimer).Enabled := False;
try
// ...
finally
(Sender as TTimer).Enabled := True;
end;
end;

Так надежнее будет.



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-48512
{bas}
2003-09-02 14:45
2003.09.15
Логирование нажатия кнопок


3-48430
Lenchik_Z
2003-08-25 12:21
2003.09.15
ADOConnection


14-48724
jack128
2003-08-28 00:12
2003.09.15
Именинники 28 августа


6-48677
Gigabyte
2003-07-13 17:51
2003.09.15
Веб сервер и PHP


9-48384
BANick
2003-03-07 20:28
2003.09.15
Люди подскажите как в ОПЕНГЛ тесктуру прозрачной сделать