AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Queries per Thread aktualisieren

Ein Thema von Schwarzesshaaf666 · begonnen am 24. Jan 2025 · letzter Beitrag vom 27. Jan 2025
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
769 Beiträge
 
#11

AW: ADO Queries per Thread aktualisieren

  Alt Gestern, 22:12
Also wenn du den Zustand von außen Pollen willst, dann macht es wenig Sinn, FreeOnTerminate auf true zu setzen, da das Objekt dann ggf. zu früh freigegeben wird. Aber den Zustand pollen macht sowieso keinen Sinn, entweder du benutzt das Ereignis OnTerminate oder du übergibst eine call-back-prozedur und rufst diese dann am Ende des Threads mit synchronize auf und machst dann dort mit Recordcount was immer du machen willst.
  Mit Zitat antworten Zitat
Schwarzesshaaf666

Registriert seit: 14. Apr 2006
Ort: Herford
10 Beiträge
 
#12

AW: ADO Queries per Thread aktualisieren

  Alt Heute, 08:48
Oha, das mit dem OnTerminate ist ein guter Tipp. Hab das völlig übersehen. Statt mit dem Timer zu pollen, melde ich den RecordCount nun im OnTerminate. Danke!

Edit: Am Ende hat sich rausgestellt, dass im Thread eigentlich nur CoInitialize(nil) und CoUninitialize() gefehlt haben.
_________________
FREI STATT BAYERN
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.416 Beiträge
 
Delphi 12 Athens
 
#13

AW: ADO Queries per Thread aktualisieren

  Alt Heute, 09:34
Hallöle...

Delphi-Quellcode:
constructor TQThread.Create(DataSource: TDataSource);
begin
  FDataSource := DataSource;
  FQuery := TADOQuery(FDataSource.DataSet);
  FreeOnTerminate := True; // <--

  inherited Create(True);
end;
Persönlich würde immer das inherited immer im Konstruktor an erste Stelle setzen. In deinem Falle greiftst auf eine Variable des TThread zu, die noch nicht existent sein sollte, weil das Create des TThread noch nicht durchlaufen ist. Warum das bei dir funktioniert, weis ich nicht... Klärt mich auf.

besser:
Delphi-Quellcode:
constructor TQThread.Create(DataSource: TDataSource);
begin
  inherited Create(True);

  FDataSource := DataSource;
  FQuery := TADOQuery(FDataSource.DataSet);
  FreeOnTerminate := True;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz