Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c