お世話になります。
サービスアプリケーションを以下のように記述しましたが、
1回だけlogが記入されるのですが、以降はLogに出力されません。
ネットの情報を見て作成したのですがよくわかりません。
どうすればいいでしょうか? よろしくお願いします。
環境はWindows7 Pro +DelphiXE2です。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs;
type
TService1 = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
private
{ Private 宣言 }
public
function GetServiceController: TServiceController; override;
{ Public 宣言 }
end;
var
Service1: TService1;
implementation
{$R *.DFM}
procedure DosaveLog(Msg: String);
var
lolist : TStringList;
begin
try
lolist := TStringList.Create;
if FileExists('D:\DelphiXe2\service.log') then
lolist.LoadFromFile('D:\DelphiXe2\service.log');
lolist.Add(TimeToStr(now) + ':' + Msg);
{except
on e: exception do
lolist.Add(TimeToStr(now) + ': ERROR ' + E.Message);
end; }
finally
lolist.SaveToFile('D:\project\DelphiXE2\service.log');
lolist.Free;
end;
end;
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;
function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TService1.ServiceContinue(Sender: TService; var Continued: Boolean);
begin
while not Terminated do
begin
Sleep (10);
ServiceThread.ProcessRequests (False);
end;
end;
procedure TService1.ServiceExecute(Sender: TService);
const
SecBetweenRuns = 10;
var
Count: Integer;
begin
Count := 0;
while not Terminated do
begin
Inc(Count);
if Count >= SecBetweenRuns then
begin
Count := 0;
{ place your service code here }
{ this is where the action happens }
// SomeProcedureInAnotherUnit;
DoSaveLog('ServicExcute');
end;
Sleep(1000);
ServiceThread.ProcessRequests(False);
end;
end;
procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
Paused := True;
end;
end.
ファイルのパスの指定が間違っていませんか。
編集 削除あさんありがとうございます。
すみませんご指摘通り単純なミスでした。