• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Delphi [wątki] - ogromne wycieki pamięci po wczytaniu z bazy

0 głosów
51 wizyt
pytanie zadane 30 stycznia 2017 w Pascal, Delphi przez a.kowalczyk47 Nowicjusz (180 p.)
Czesc. Mam problem z czyszczeniem pamięci po wczytaniu z bazy danych 100 tys rekordów ( używam wątku żeby podczas wczytywania nie zatrzymywać głównej formy). Przesylam mój kod zebyście mogli mi pomóc. nie wiem gdzie jest błąd

procedure TWczytywanieADO.Execute;
var
  I : integer;
begin
try
  NameThreadForDebugging('WczytywanieADO');
  { Place thread code here }
  ConnectionString := TMSConnection.Create(nil);
  with ConnectionString do
    begin
      ConnectString := dm.ADOConnectionServer.ConnectString;
      Pooling := true;
    end;

  ado := TMSQuery.Create(nil);
    with ado do
      begin
        try
          NonBlocking := true;
          Connection := ConnectionString;
          SQL.Text := SQLText^;
          FetchAll := true;
          Name := 'IQWatek';

          repeat
            if Formatka^ = nil then
              sleep(60)
            else if (DSource^.DataSet <> NIL) then
              sleep(60)
            else if DSource^.DataSet <> ado then
              begin

                EnterCriticalSection(cls);
                  DSource^.DataSet := ado;
                LeaveCriticalSection(cls);

                Open;
                repeat

                until THGrid^.RowCount > ado.RecordCount - 1;
                  ThGrid^.Enabled := true;
             end;
          until THGrid^.RowCount > ado.RecordCount - 1;
        finally
          EnterCriticalSection(cls);
            DSource^.Enabled := false;
            DSource^.DataSet := nil;
          LeaveCriticalSection(cls);
        end;
      end;
  finally
//    ado.Free;
    DeleteCriticalSection(cls);

    FreeMem(Formatka);
    FreeMem(ThGrid);
    FreeMem(sqltext);
    FreeMem(DSource);
    FreeandNIl(ado);

  end;
end;

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
2 odpowiedzi 197 wizyt
+1 głos
2 odpowiedzi 1,414 wizyt
0 głosów
2 odpowiedzi 155 wizyt
pytanie zadane 5 grudnia 2015 w C i C++ przez C☺ndzi Stary wyjadacz (10,870 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

52,032 zapytań

94,890 odpowiedzi

193,427 komentarzy

25,358 pasjonatów

Przeglądających: 140
Pasjonatów: 3 Gości: 137

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...