Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: TOracleQuery Threaded --> Wann Query-Objekt freigeben

  Alt 5. Mai 2010, 10:08
Hi Sirius,

leider kenne ich TORacleQuery nicht, aber beim Lesen Deines Posts habe ich mir die Frage gestellt warum DU das so gelöst hast.

Ich hoffe mal das :
Query.Execute; sich bei TOracleQuery auf Execute eines TThreads bezieht und nicht dem Execute einer TQuery, in dem Fall müßte es nämlich Query.Active := true; heissen weil Du ein "Select" SQL hast.
Ich gehe jetzt mal ganz stark von Execute eines TThreads aus, dabei würde mich interessieren wann das Programm an die Zeile :
inc(FQueryCount); kommt ?! Werden vorher die Events OnThreadRecord, OnThreadFinished aufgerufen ?
Wenn ja, kannst Du nach dem Execute die Query einfach freigeben.

Dein jetziger Code mit der FQueryCount=0 "Sperre" ist nicht wirklich "Thread-Safe",
gerade wenn Du das ganze nachher aus einem DB-Event aus aufrufen möchtest,
solltest Du das ganze besser mit einer TCriticalSection schützen.

Ist Deine Funktion "Log" den Thread-Safe ? Alternativ könntest Du erstmal "OutputDebugSTring" verwenden.

Wenn das Oracle Query-Object auf einem Thread aufbaut, vielleicht gibt es sogar die Eigenschaft "FreeOnTerminate",
dann bis Du aus der Sache fein raus.

Aber ich denke die meisten brauchen um Dir zu helfen ein wenig mehr imput was "TOracleQuery" angeht,

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat