title: Delphi: TThreadList sometimes lock program
body: <p>Sometimes this function locks my program, and it's freezes until i close it.
  What is wrong here ?</p>
  
  <pre><code>function del_from_list(id:string):boolean;
  var i : integer;
  begin
    Result := True;
    try
      with global_list.LockList do
      begin
        for i:=0 to Count-1 do
        begin
          if Tthread_list(Items[i]).id = id then
          begin
            Delete(i);
            break;
          end;
        end;
      end;
    finally
      global_list.UnlockList;
    end;
  end;
  </code></pre>
  
  <p>the class</p>
  
  <pre><code>  Tthread_list = class
    public
      id   : string;
      constructor Create(const id: string);
    end;
  </code></pre>
  
  <p>I'm adding to the list like that:</p>
  
  <pre><code>global_list.Add(Tthread_list.Create('xxx'));
  </code></pre>
  
  <p>global list is a global variable</p>
  
  <pre><code>var global_list : TThreadList = nil;
  </code></pre>