读书人

线程处理好像是sleep函数出错,该怎么

发布时间: 2012-03-11 18:15:38 作者: rapoo

线程处理,好像是sleep函数出错
procedure TLivingThread.Execute;
var
i: Integer;
begin
while not Terminated do begin
if GetTickCount - CheckTime > 60 * 1000 then begin
for i := 0 to List.Count - 1 do begin // Iterate
try
if not Terminated then begin
if abs(GetTickCount - pretime) > 100000 then begin
//程序处理
end;
end;
end;
except
Continue;
end;
end; // for
CheckTime := GetTickCount;
end
else
Sleep(500);
end; // while
end;


-------------------
其中好像是Sleep这个地方出错,是read地址x00000000出错
寻求解决办法

[解决办法]
sleep应该不会引起错误的。

List.Count 这个List是线程类的成员吗?

//程序处理
这段代码中有没有引用什么VCL组件?
[解决办法]
sleep函数是不会出错的.
查错方法: 增加一个全局变量, 在代码中各个地方加入对该变量赋值(赋不同的值), 用try except end捕获错误,然后看看该变量值是多少,就知道在哪个语句出错了
var
DbgV: integer;

procedure XXX();
....


try
....
DbgV := 1;
....
DbgV := 2;
....
DbgV := 3;
....
DbgV := 4;
....
except
.....
end;
....
[解决办法]
try to debug it!
[解决办法]
是不是list的问题,,使用TThreadList试试

读书人网 >.NET

热点推荐