Hallo,<br>
aus dem Titel lässt sich wohl erschließen, wo das Problem liegt...
ich arbeite in meinem Programm mit Threads.
<br>
Mein System setzt sich eigentlich aus zwei wesentlichen Merkmalen zusammen, die dieses Konzept rechtfertigen (?).
<br>
a) Es gibt Module zur Bearbeitung von Kundendatensätzen. (Überraschung *g*)
b) Ein User muß manchmal über bestimmte Ereigisse unterrichtet werden.
Dazu gehören Events wie:
- Ein gesperrter Datensatz, wird wieder freigegeben.
- Nachrichten empfangen.
- etc.
<br>
welche über Threads gesteuert werden.
<br>
Wie zu erwarten war, kommt es dann natürlich zu Problemen.
Ich verwende nämlich ein Connection-Objekt über das alle Anfragen an die Datenbank laufen.
Und siehe da.. ich krieg (oh Überraschung) die Meldung "Datenbankverbindung ist derzeit mit einem anderen Befehl beschhäftigt." (oder so).
<br>
Um dem Ganzen entgegen zu wirken habe ich natürlich CriticalSections eingebaut und was man so alles für Threads benutzen sollte.
<br>
Das Resultat ist gut, ich kriege diese Fehlermeldung nicht mehr.
Allerdings denke ich, dass der Schein trügt..
Da Module mit ADO-Objekten (Command, DataSet) jederzeit Daten abfragen können, befürchte ich, dass in seltenen Fällen es doch zu Fehlern kommt.
<br>
Deshalb meine eigentliche Frage:
- Gibt es eine saubere und zuverlässige Möglichkeit zu prüfen ob
die Connection frei ist und ggf. diese für einen kurzen Moment
für andere zu sperren?
- Ich hatte auch über ein zusätzliches Connection-Objekt
nachgedacht, befürchte aber, dass ich dann in Teufels Küche
kommen, wenn es um CALs geht.
<br>
Thx für ein paar Tips.
<br>
//Edit: TADOConnection.State für die Statusabfrage hab ich schon gefunden, funktioniert die zuverlässig?
aus dem Titel lässt sich wohl erschließen, wo das Problem liegt...
ich arbeite in meinem Programm mit Threads.
<br>
Mein System setzt sich eigentlich aus zwei wesentlichen Merkmalen zusammen, die dieses Konzept rechtfertigen (?).
<br>
a) Es gibt Module zur Bearbeitung von Kundendatensätzen. (Überraschung *g*)
b) Ein User muß manchmal über bestimmte Ereigisse unterrichtet werden.
Dazu gehören Events wie:
- Ein gesperrter Datensatz, wird wieder freigegeben.
- Nachrichten empfangen.
- etc.
<br>
welche über Threads gesteuert werden.
<br>
Wie zu erwarten war, kommt es dann natürlich zu Problemen.
Ich verwende nämlich ein Connection-Objekt über das alle Anfragen an die Datenbank laufen.
Und siehe da.. ich krieg (oh Überraschung) die Meldung "Datenbankverbindung ist derzeit mit einem anderen Befehl beschhäftigt." (oder so).
<br>
Um dem Ganzen entgegen zu wirken habe ich natürlich CriticalSections eingebaut und was man so alles für Threads benutzen sollte.
<br>
Das Resultat ist gut, ich kriege diese Fehlermeldung nicht mehr.
Allerdings denke ich, dass der Schein trügt..
Da Module mit ADO-Objekten (Command, DataSet) jederzeit Daten abfragen können, befürchte ich, dass in seltenen Fällen es doch zu Fehlern kommt.
<br>
Deshalb meine eigentliche Frage:
- Gibt es eine saubere und zuverlässige Möglichkeit zu prüfen ob
die Connection frei ist und ggf. diese für einen kurzen Moment
für andere zu sperren?
- Ich hatte auch über ein zusätzliches Connection-Objekt
nachgedacht, befürchte aber, dass ich dann in Teufels Küche
kommen, wenn es um CALs geht.
<br>
Thx für ein paar Tips.
<br>
//Edit: TADOConnection.State für die Statusabfrage hab ich schon gefunden, funktioniert die zuverlässig?
Comment