线程占用CPU太高了
indy10 UDP控件
- Delphi(Pascal) code
procedure TUDPThread.Execute;begin while not Terminated do begin if not MainForm.IdUDPClient1.Active then Terminate else begin//里面什么都没有执行,CPU直接彪到50% end; end;end;
[解决办法]
procedure Delay(time: Cardinal);
var ncurr : Cardinal;
begin
ncurr := GetCurrentTime;
while GetCurrentTime - ncurr <= time do Application.ProcessMessages;
end;
while not Terminated do
begin
if not MainForm.IdUDPClient1.Active then
Terminate
else
begin
//里面什么都没有执行,CPU直接彪到50%
end;
delay(10);
end;
[解决办法]
感觉代码有点类似死循环。sleep试试。
var a:boolean;
a := true;
while a do
begin
end;
//这样子CPU应该也会这样会吧,手头没DELPHI,没法测试了。
[解决办法]
procedure TUDPThread.Execute;
begin
while not Terminated do
begin
if not MainForm.IdUDPClient1.Active then
Terminate
else
begin
//里面什么都没有执行,CPU直接彪到50%
end;
sleep(1000) //每隔一秒线程执行一次。 你的那个一秒不停执行,当然CPU占用高。 end;
end;