Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

база и сервис 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
3-48410
rh
2003-08-25 08:56
2003.09.15
SQL-запрос программно


6-48664
zep
2003-07-12 22:46
2003.09.15
Disсonnect


1-48564
JokerT
2003-09-04 16:01
2003.09.15
Ошибка


14-48779
neXt
2003-08-26 09:43
2003.09.15
Перл умер. Да здравствует Питон.


7-48816
NewJack
2003-07-02 11:20
2003.09.15
Чтение из буфера клавиатуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский