我用delphi做的一个服务程序,怎么运行的时候,占用CPU 100%呀,这是怎么回事?如何解决呀??高手进

喜欢编程朋友 2006-03-06 10:30:26

我很急需的,我用delphi做的一个服务程序,这个服务程序就是每天晚上12:00的时候,把一个文件夹下的一个文件复制到另一个文件夹里面,并重新命名。
但是,这个服务运行的时候,即便是不到晚上12:00的时候,我看一下任务管理器怎么CPU占用 100%呀,这是怎么回事?如何解决这个问题呀??我想平时就象其他的windows服务一样占用CPU 0%。这个怎么来解决???请高手们帮忙呀!!多谢了!!!
...全文
471 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firstrose 2006-03-10
  • 打赏
  • 举报
回复
那你是说应该是processMessage的问题了?
僵哥 2006-03-08
  • 打赏
  • 举报
回复
你里面放个timer,当然100%了。

用系统的定时器吧。SetTimer
--------------------------
在里面使用Timer跟占用CPU资源无关。
僵哥 2006-03-08
  • 打赏
  • 举报
回复
procedure TWinService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
application.processMessage
End; //
Timer1.Enabled:=false;
end;
-----------------------------
application.processMessage;//这个在这里千万不能使用,否则会有预想不到的结果,并且也达不到楼主预期的目的。
firstrose 2006-03-08
  • 打赏
  • 举报
回复
你里面放个timer,当然100%了。

用系统的定时器吧。SetTimer
僵哥 2006-03-07
  • 打赏
  • 举报
回复
procedure TWinService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
Sleep(1); //
End; //
Timer1.Enabled:=false;
end;
喜欢编程朋友 2006-03-07
  • 打赏
  • 举报
回复
我的程序代码如下:
unit Unit1;

interface

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

type
TWinService = class(TService)
Timer1: TTimer;
procedure ServiceExecute(Sender: TService);
procedure Timer1Timer(Sender: TObject);
procedure ServiceCreate(Sender: TObject);
private
{ Private declarations }
ifrun:Boolean;
Deststr:string;
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
WinService: TWinService;

implementation

{$R *.DFM}

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

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

procedure TWinService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled:=true;
while not Terminated do
ServiceThread.ProcessRequests(False);
Timer1.Enabled:=false;
end;

procedure TWinService.Timer1Timer(Sender: TObject);
begin
if time='12:00' then
begin
CopyFile(PChar('E:\123\123.dat'),PChar(Deststr),false);
end;
end;
end;

procedure TWinService.ServiceCreate(Sender: TObject);
var
p:PChar;
begin
ifrun:=false;
GetMem(P,255);
try
GetSystemDirectory(p,254);
Deststr:=strpas(p)+'\host.dat';
finally
Freemem(p);
end;
end;

end.
weyoung 2006-03-07
  • 打赏
  • 举报
回复
procedure TWinService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
application.processMessage;
End; //
Timer1.Enabled:=false;
end;
僵哥 2006-03-06
  • 打赏
  • 举报
回复
看你的程序吧.

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧