procedure TSplitDataATM.Execute;
var
  ls: TList;
  i, j, k, m: Integer;
begin
  ls := GetSplitData(FSplitCount);  //从队列中取出数据,再分批次插入数据库  j := FSplitCount div ONCE_INSERT_CNT;
  k := 0;
  while (not Terminated) do
  begin
    for i := 0 to j - 1 do
    begin
      BatchInsert(ls, k,  k + ONCE_INSERT_CNT - 1);
      k := k + ONCE_INSERT_CNT;
      if Terminated then Break;
    end;
    BatchInsert(ls , k, ls.Count - 1);
  end;  for m := 0 to ls.Count - 1 do Dispose(PSplit(ls[m]));
  ls.Clear();
  ls.Free();
end;
procedure TSplitDataATM.BatchInsert(ls: TList; beginIndex: Cardinal; endIndex: Cardinal);
begin
  //组建Insert SQL语句,将TList中的指针对象插入数据库
end;说明:
  队列中缓存的数据比较多(即FSplitCount值比较大,例如:20000),从队列中取出后,在线程的Execute方法中,分批次插入数据库(例如:ONCE_INSERT_CNT=1000)
问题:
  线程Resume以后,Execute只会执行一次BatchInsert,然后线程就执行完成并自动销毁了  通过加日志的方式,发现以下代码不会执行:
  k := k + ONCE_INSERT_CNT;
  ……
  k的值也没有变化。  通过调试发现,原因是i的值不为0,总是为一个较大的值,例如:30803952,28006642,44300076,通过在Execute的第一行加:i := 0也无济于事。  错在哪里呢???