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