我有一个线程的Execute里是这样写的 while not self.Terminated do
begin
main;//线程里的一个函数
application.ProcessMessages ;
sleep(600000);
end;
我是想每隔600000ms执行一次main函数
程序运行一段时间后没反应了,没捕捉到原因,像是线程终止了,之后程序一直占25%的CPU
不知道是不是跟这里的设置有关,我能不能这样写
或者程序有可能的哪里出了问题,请各位指引一下
begin
main;//线程里的一个函数
application.ProcessMessages ;
sleep(600000);
end;
我是想每隔600000ms执行一次main函数
程序运行一段时间后没反应了,没捕捉到原因,像是线程终止了,之后程序一直占25%的CPU
不知道是不是跟这里的设置有关,我能不能这样写
或者程序有可能的哪里出了问题,请各位指引一下
begin
main;//线程里的一个函数
application.ProcessMessages ;
sleep(600000);
end;
绝对不能这么写,你的线程一睡就睡上600秒,你关闭主程序时还要等这个线程执行完,你要等到什么时候:
while not Terminated do
var
i: Integer;
begin
main;//这个方法有没有关于主线程的东西,比如操作VCL
for i := 1 to 6000 do
if Terminated then
Exit
else
Sleep(100);
end;
WaitForSingleObject并不能代替Terminated,而Terminate也只是将Terminated属性置为Ture。