如果下面的代码没错,
我为什么在C:\'c:\ServiceLog.txt里看不到服务写的‘hello’?----------------------------------------------------------program SmallService;uses
SvcMgr,
Unit1 in 'Unit1.pas' {Service1: TService};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TService1, Service1);
Application.Run;
end.--------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
type
TSparkyThread = class(TThread)
public
procedure Execute; override;
end;type
TService1 = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Service1: TService1;
implementation
{$R *.DFM}
var
SparkyThread: TSparkyThread;
procedure TSparkyThread.Execute;
var
f:TextFile;
begin
while not Terminated do
begin
AssignFile(f, 'c:\ServiceLog.txt');
Append(f);
Writeln(f,'Hello!');
Flush(f);
CloseFile(f);
Sleep(100);
end;
end;procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
SparkyThread := TSparkyThread.Create(False);
Started := True;
end;procedure TService1.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
SparkyThread.Resume;
Continued := True;
end;procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
SparkyThread.Suspend;
Paused := True;
end;procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
SparkyThread.Terminate;
Stopped := True;
end;end.
我为什么在C:\'c:\ServiceLog.txt里看不到服务写的‘hello’?----------------------------------------------------------program SmallService;uses
SvcMgr,
Unit1 in 'Unit1.pas' {Service1: TService};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TService1, Service1);
Application.Run;
end.--------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;
type
TSparkyThread = class(TThread)
public
procedure Execute; override;
end;type
TService1 = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Service1: TService1;
implementation
{$R *.DFM}
var
SparkyThread: TSparkyThread;
procedure TSparkyThread.Execute;
var
f:TextFile;
begin
while not Terminated do
begin
AssignFile(f, 'c:\ServiceLog.txt');
Append(f);
Writeln(f,'Hello!');
Flush(f);
CloseFile(f);
Sleep(100);
end;
end;procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
SparkyThread := TSparkyThread.Create(False);
Started := True;
end;procedure TService1.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
SparkyThread.Resume;
Continued := True;
end;procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
SparkyThread.Suspend;
Paused := True;
end;procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
SparkyThread.Terminate;
Stopped := True;
end;end.
FreeOnTerminate:= True;procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
SparkyThread.Terminate;
SparkyThread.Destroy;
Stopped := True;
end;
应该就可以正常关系服务了...
而且,你的代码Excute中没有写下去,就是写了,也可能就只有一个,应该用一个循环顺序读行,直到读到最后,在写你的'Holle!'....