• 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
43 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 179 wizyt
+1 głos
2 odpowiedzi 1,275 wizyt
0 głosów
2 odpowiedzi 154 wizyt
pytanie zadane 5 grudnia 2015 w C i C++ przez C☺ndzi Stary wyjadacz (10,870 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.
Ciekawy innych porad? Odwiedź tę stronę!

48,556 zapytań

90,186 odpowiedzi

181,559 komentarzy

23,506 pasjonatów

Przeglądających: 186
Pasjonatów: 13 Gości: 173

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.

...