Hi...
Ich habe folgendes Phänomen beobachtet:
Wenn ich in meinem Programm eine
SQL-
Query öffne muss ich ca 40 sec auf das Ergebnis warten. Darum habe ich die Abfrage in einen Tread laufen, in dem ein Datenmodul mit den DBExpress- und
IB-Kompos aus einer
DLL geladen wird. Es erscheint also ein Fenster, dass die sekunden (Dauer der Abfrage) mitzählt.
Leider habe ich aber sehr ungeduldige User, die diese Zeit nutzen um z.B. ein Word-Dokument zu öffnen. Wenn sie dies nun tun, dauert das Laden des Dokuments einen Moment länger als gewohnt - okay. Wenn ich dann aber anfange zwischen meinem Programm und dem Worddokument (und noch ein paar anderen Fenstern wie Arbeitsplatz, Notepad etc.) hin und herzuschalten während die
Query noch läuft, dann bekomme ich einen Speicherfehler. Aber nur manchmal!
Das Programm setzt eine
SQL-Abfrage (SQLQuery via SQLConnection) ab, liest das in mein TDatenArray ein (type Array of Array of String) und gibt es von der
DLL an das Hauptprogramm zurück. Dort wird es noch kalkuliert,formatiert und ausgegeben (in ca 1 sekunde je nach Datenaufkommen auch länger).
Hat jemand ne Idee was ich mal versuchen kann. Oder worauf ich in meinem Code achten sollte?
[edit]Achja... ich benutze FastSharemem 2.1 für die Übergabe der String-Typen an die
DLL. Das muss leider so und funktioniert auch soweit. Ist in einem unabhängigen Projekt ausgiebig getestet.[/edit]
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?