首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-11 
线程处理,好像是sleep函数出错procedureTLivingThread.Executevari:IntegerbeginwhilenotTerminateddobe

线程处理,好像是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试试

热点排行