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

Вниз

Вопрос по TService   Найти похожие ветки 

 
andrey__   (2003-06-25 12:17) [0]

Пытаюсь написать службу . При прогоне в Delphi6 работает 10 -15с. Почему?

Служба записи в файл по таймеру(каждая 1 секунда) определенной строки.
unit Unit1;

interface

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

type
TService1 = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
procedure writeFile;
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.writeFile;
Var
nameFile1: string;
F1 : text;
begin
try
nameFile1:="d:\temp1\aaa1";
assignFile(F1, nameFile1);
if not(FileExists(nameFile1)) then
begin
rewrite(F1);
closeFile(F1);
end;
append(F1);
writeln(F1,FormatDateTime("dd"."mm"."yyyy" "hh":"nn":"ss":"zzz",Now));
except
end;
try
closeFile(F1);
except
end;
end;
//---------------------------------------------------
procedure TService1.Timer1Timer(Sender: TObject);
begin
writeFile;
end;

end.


 
andrey__   (2003-06-25 12:48) [1]

ало кто-нибуть.


 
ggsoft ©   (2003-06-25 13:00) [2]

А где TService.OnExecute?


 
andrey__   (2003-06-25 13:12) [3]

>А где TService.OnExecute?
когда оно приисходит?
скажи какие деиствия мне надо в нем описать


 
ggsoft ©   (2003-06-25 13:22) [4]

Да ладно, Бог с ним с OnExecute...

Ты же не можешь запустить службу под Delphi и заниматься ее отладкой...
Зарегистрируй ее (Меню-Run-Parameters...- /install), а уже потом и запускай из "Службы"

А пример посмотри, да хотя бы: Delphi Help - TService - Using TService... все понятно...


 
vuk ©   (2003-06-25 13:34) [5]


procedure TSomeService.ServiceExecute(Sender: TService);
begin
while not Terminated do
ServiceThread.ProcessRequests(True);
end;


 
DieHard ©   (2003-06-25 13:37) [6]

Можно запустить службу под Delphi и заниматься ее отладкой.
Надо только за эти 10-15 секунд успеть её также запустить из "Служб"


 
ggsoft ©   (2003-06-25 14:24) [7]


> DieHard © (25.06.03 13:37)

Согласен. Читал... (там же)
---------------------------
On Windows NT systems, you can use another approach for debugging service applications. However, this approach can be tricky, because it requires short time intervals:

1 First, launch the application in the debugger. Wait a few seconds until it has finished loading.
2 Quickly start the service from the control panel or from the command line:

start MyServ

You must launch the service quickly (within 15-30 seconds of application startup) because the application will terminate if no service is launched.
------------------------
Hо чаще делаю по другому...
void __fastcall TService1::ServiceExecute(TService *Sender)
{
bool IsService = !MainForm;
while (IsService ? !Terminated : (bool)MainForm) try {
if (IsService) ServiceThread->ProcessRequests(true);
else Forms::Application->HandleMessage();
}
catch (...) {
//...
}
}
Это из Builder-a, подразумевается, что при запуске приложения создается SvcMgr.Application.CreateForm() и Forms.Application.CreateForm() тогда все сводится к запуску и отладке как обычного приложения а не службы.

З.Ы.
Ну как плюс (или... минус?) возрастает размер исполняемого файла службы.


 
andrey__   (2003-06-25 15:00) [8]

Как запустить из "Служб"


 
ggsoft ©   (2003-06-25 15:03) [9]

Кошмар какой...

Панель управления - Администрирование - Службы...


 
andrey__   (2003-06-25 16:21) [10]

> ggsoft © (25.06.03 15:03)
извини бывает.

Еще такой момент. В "Службе" нет моей службы (я делал Меню-Run-Parameters...- /install)


 
ggsoft ©   (2003-06-25 16:53) [11]

Странно очень...

И что, после того как - Parameters... /install + Run(F9) - тебе Delphi не сказало - "Service installed successfully"?


 
andrey__   (2003-06-25 17:18) [12]

нет


 
ggsoft ©   (2003-06-25 19:22) [13]

Весь твой код скопировал - вставил - ничего не менял - работает, до сих про в D:\Temp1\ пишет, и пишет... и пишет...
создай по-новой, есть же в Delphi примеры.
Ну или попробуй из командной строки "%Path%\MyService.exe /install".
А так и не знаю, что советовать... не сталкивался с таким.


 
ggsoft ©   (2003-06-25 19:23) [14]

Хотя, а может... издеваешься? Чем не мысль?


 
andrey__   (2003-06-26 10:45) [15]

>ggsoft © (25.06.03 19:23)
Какой смысл. Нет не прикалывался.

>ggsoft © (25.06.03 19:22)
Сделал. сказало - "Service installed successfully"

Запускаю службу под Delphi и за эти 10-15 секунд запускаю из "Служб". В Delphi попрежнему работает 10-15 секунд, а служба работает дальше. Так и должно быть?





 
DieHard ©   (2003-06-26 11:34) [16]

нет
проверь, точно ли запускаешь одни и те же экзешники


 
andrey__   (2003-06-26 13:31) [17]

>DieHard © (26.06.03 11:34)
Запускаю одни и те же экзешники.

Почему-то сечас при запуске в Delphi запускается и сразу выходит (не работает и прежних 10 с.)

Сама служба работает(постоянно пишет в файл) если запустить.


 
andrey__   (2003-06-26 13:54) [18]

Когда запускаю в "Службе" а потом в Delphi работает прежние 10-15 с.



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

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

Наверх




Память: 0.51 MB
Время: 0.022 c
3-31113
rosl
2003-06-17 05:57
2003.07.10
копирование данных в excel


6-31373
mike.dld
2003-05-04 18:25
2003.07.10
Интернет


1-31336
Jao
2003-06-27 09:32
2003.07.10
Фильтр для файлов в ShellListView1


1-31304
maxic
2003-06-26 16:40
2003.07.10
Динамическая загрузка DLL


1-31254
Mihey
2003-06-29 23:05
2003.07.10
Проблемы с BlockRead.