anchor.diff:          FBlockChainGrid.FBlockChainDataList.Add(Llist[i]);
         end;
         if Assigned(FBlockChainGrid.DrawGrid) then begin
  -        if Llist.Count>0 then FGridUpdateCount := Llist.Count+1
  -        else FGridUpdateCount := 2;
  -        Synchronize(UpdateDrawGrid);
  +        if Llist.Count>0 then FBlockChainGrid.DrawGrid.RowCount := Llist.Count+1
  +         else FBlockChainGrid.DrawGrid.RowCount := 2;
  +         FBlockChainGrid.FDrawGrid.Invalidate;
         end;
       end;
     finally
       Llist.Free;
     end;
  -end;
  -
  -procedure TBlockChainGridUpdateThread.UpdateDrawGrid;
  -begin
  -  if not Assigned(FBlockChainGrid) or not Assigned(FBlockChainGrid.DrawGrid)
  -    then Exit;
  -  FBlockChainGrid.DrawGrid.RowCount := FGridUpdateCount;
  -  FBlockChainGrid.FDrawGrid.Invalidate;
   end;
   
   constructor TBlockChainGridUpdateThread.Create(ABlockChainGrid : TBlockChainGrid);
  
positive.code:   inherited Create(True);
    FreeOnTerminate := False;
    Suspended := False;
  end;
  
  procedure TOperationsGridUpdateThread.DoUpdateOperationsGrid(ANode: TNode; var AList: TList<TOperationResume>);
  
negative.code:   inherited Create(True);
    FreeOnTerminate := False;
    Suspended := False;
    ExecuteUIThread := True;
  end;
  
  procedure TBlockChainGridUpdateThread.DoUpdateBlockChainGrid(ANode: TNode; var AList: TList<TBlockChainData>; ABlockStart, ABlockEnd : Int64);
  