| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Служба |
| Автор: m1nder 27.9.2009, 20:30 | ||
Здравствуйте! Подскажите как мне корректно завершить службу. Допустим есть простенький код:
Если вручную завершать службу, то она вылетает с ошибкой, я понимаю, что нужно обработать остановку, но вот только как? Заранее благодарю! |
| Автор: Virtuals 28.9.2009, 06:13 | ||
| m1nder, ничего непонятно, показывай код полностью!. а так
|
| Автор: m1nder 28.9.2009, 11:12 | ||
Программа сравнивает файлы по датам каждые 10 сек и если они разные - переписывает. Проблемка с остановкой службы. Как корректно остановить службу и завершить ее?
Модератор: не забываем использовать кнопку КОД |
| Автор: CodeMonkey 28.9.2009, 11:34 | ||
Что ЭТО?
|
| Автор: Virtuals 28.9.2009, 13:06 | ||||||
| CodeMonkey, это его сервис сам себя в "прошлое" отправляет m1nder, ты блин зачем основной поток сервиса вообще трогаеш?. в ServiceExecute ты должен инициализировать все что нужно, и выполнять свое грязное дело внутри цикла
а то что у тебя отрабатывает 1 раз и все. в идеале, ServiceExecute вообще не трогают а отрабатывают по сообщениям
тоесть в отдельном потоке. ЗЫ имхо сделай для начала свою процедуру отдельным потоком (и отлаживать легче будет) типа
а потом уже в сервисы лезь. |
| Автор: m1nder 30.9.2009, 17:11 | ||
Пробовал по всякому, не получается нормальной работы со службой. Virtuals, подскажи как правильно
в цикл сунуть или как это при помощи потоков сделать. Подскажите поподробнее, пожалуйста. |
| Автор: CodeMonkey 30.9.2009, 20:53 |
| http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1348. |
| Автор: Keeper89 30.9.2009, 23:56 |
| У CodeMonkey на все случаи жизни статьи есть |
| Автор: m1nder 1.10.2009, 15:42 | ||
Пробую через поток, но ничего не выходит! В чем причина?
А через OnStart и OnStop у меня не получается. Пробовал по всякому, иногда запускаешь службу - процесс выполняется, а служба не стартует и выснет. А через Execute цикл While not Terminated do отрабатывает 1 раз. Напишите мне пару строк как сделать и забыть, там же много кода не нужно, заодно я разберусь. |
| Автор: CodeMonkey 1.10.2009, 17:14 | ||
| Эх, ещё один шедевр. Что, по-вашему, должна делать служба, если её Execute-тело заканчивается? Да ни черта вы не разберётесь вы, а втупую запомните пример. Учитесь мыслить и делать выводы самостоятельно. Вам это ничто не заменит. Пример несложного мозгового упражнения. Написано:
Внимание, наводящий вопрос: нафига вы назначили OnExecute, если в нём вы создаёте поток? Право же, это несложно. |
| Автор: m1nder 1.10.2009, 18:23 | ||
Всем огромное спасибо!!! Особенно Вам, CodeMonkey! Написал наконец свою программу +) оказалось все просто. Выложу код, вдруг кому понадобится:
|
| Автор: Virtuals 6.10.2009, 05:59 | ||||
| m1nder, ну нафига sleep(5000); // 5 сек внутри цикла? статью внимательней читай.
|
| Автор: papweilm 29.11.2022, 06:00 |
Модератор: Сообщение скрыто. |
| Автор: saiple 24.12.2022, 13:19 |
| levitra 10 mg reviews <a href=" https://levitraoffer.com/# ">what is vardenafil 20mg</a> buy generic levitra online |
| Автор: saiple 28.12.2022, 18:33 |
| what is levitra used for <a href=" https://levitraoffer.com/# ">levitra pills men</a> levitra 20 mg film coated tablets |
| Автор: saiple 31.12.2022, 22:58 |
| levitra online purchase <a href=" https://levitrair.com/# ">vardenafil hcl 20mg tablet</a> levitra pills men |