Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Написание службы с циклом


Страницы:   1 2

Molnia ©   (2010-08-11 09:08:00) 

Доброго времени суток уважаемые знатоки. Необходимо написать сервис VCL, который по таймеру будет выполнять определенные действия. Код который нужно выполнять есть, но проблема в том что сервис не запускает таймер =( Google не выдал ни одного рабочего примера. Пожалуйста дайте исходник работающего сервиса который например по таймеру пишет в файл фразу.

Заранее благодарю.


Плохиш   (2010-08-11 11:39:00) [21]


> Molnia ©   (11.08.10 11:19) [11]


> не выполняется вообще ни разу

Неужели в файле нет слова "test"?

PS. Справку по Reset уже прочитал?


Ega23   (2010-08-11 11:31:00) [22]

Хотя нет, отставить. Поторопился.


Ega23   (2010-08-11 11:29:00) [23]

Assignfile(f,'C:\test\test.txt');
Rewrite(f);
CloseFile(f);


Вы делаете мне смеяться.


Сергей М.   (2010-08-11 11:26:00) [24]

Ну опять же - с чего ты взял что "ни разу" ?
То что в файл не добавляется строка 'test', запросто может говорить о падении сервиса на строчке Reset()


Molnia   (2010-08-11 11:19:00) [25]

Файл как раз появляется, и исключений там нет, а вот кусок кода

while not self.terminated do
begin
Reset(f);
writeln(f,'test');
CloseFile(f);
sleep(5000);
self.ReportStatus;
self.ServiceThread.ProcessRequests(false);
end;


не выполняется вообще ни разу


Сергей М.   (2010-08-11 11:12:00) [26]

И где в этом коде таймер ?


> служба сразу стопится, а код не выполняется в принципе


"Ты видишь суслика ? И я не вижу. А он есть" (с) ДМБ

То что нет видимых результатов выполнения, вовсе не говорит о том что код не выполняется.
Ты ждешь появления файла C:\test\test.txt, а он не появляется ?
Это, скорее всего, говорит о том что при выполнении кода обработчика OnExecute возникло исключение и сервис по этой причине завершил работу.
Искл-е вполне могло возникнуть уже на строчке Rewrite().


George   (2010-08-11 11:11:00) [27]

Возможно где-то ошибка вылетает, надо отлаживать, я отлаживал с помощью функции OutputDebugString(), которую потом переделал во WriteToLog() :). Кстати, я бы порекомендовал создать отдельный поток и делать через события OnStart и OnStop.


Molnia   (2010-08-11 11:01:00) [28]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
 TService1 = class(TService)
   procedure ServiceExecute(Sender: TService);
 private
   { Private declarations }
 public
   function GetServiceController: TServiceController; override;
   { Public declarations }
 end;

var
 Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
 Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
 Result := ServiceController;
end;

procedure TService1.ServiceExecute(Sender: TService);
var
f:textfile;
begin
Assignfile(f,'C:\test\test.txt');
Rewrite(f);
CloseFile(f);
while not self.terminated do
begin
Reset(f);
writeln(f,'test');
CloseFile(f);
sleep(5000);
self.ReportStatus;
self.ServiceThread.ProcessRequests(false);
end;
end;

end.


Сергей М.   (2010-08-11 10:57:00) [29]

Ну тады показывай код ..


Molnia   (2010-08-11 10:47:00) [30]

неа, устанавливал с ключиком /install и запускал через оснастку сервисов.


Сергей М.   (2010-08-11 10:44:00) [31]


> Так служба сразу стопится


Так ты поди исп.файл службы запускаешь не как службу, а как обычное приложение)


Molnia   (2010-08-11 10:30:00) [32]

Так служба сразу стопится, а код не выполняется в принципе =(


George   (2010-08-11 09:53:00) [33]

А я, например делал проще:

while not self.terminated do
begin
 <do_something>;
 sleep(5000);
 self.ReportStatus;
 self.ServiceThread.ProcessRequests(false);
end;

И таймер не нужен.


Molnia   (2010-08-11 09:48:00) [34]


> это что за хрень такая?

Имелось ввиду с использованием VCL, а на WinAPI. VCL - библиотека классов.


KilkennyCat   (2010-08-11 09:40:00) [35]


> сервис VCL

это что за хрень такая?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо