![]() |
Connection Exception nach Ruhezustand / Sleep
Hallo zusammen,
ich habe ein relativ großes Programm zum Erfassen von Daten mit mehreren Usern geschrieben. Nun kommt es ab und zu vor, dass ein User das Programm über Nacht offen lässt und am nächsten Morgen, nachdem der PC dann aus dem Standby erwacht, dann eine Exception (ADO) mit Fehler beim Verbinden bekommt sobald er im Programm etwas macht. Was ist hierzu der beste Weg, die Exception abzufangen und die Verbindung wiederherzustellen? Lg Fabi |
AW: Connection Exception nach Ruhezustand / Sleep
Hallo,
Delphi-Quellcode:
try
CheckConnection; except? Reconnect; end; |
AW: Connection Exception nach Ruhezustand / Sleep
Wenn es nur definierte Stellen gibt, an denen das Programm sich befinden kann, kannst du testen + reconnecten. Sonst müsstest du vor jedem Zugriff (zB DataSet.Next) auf die DB testen + das geht nicht immer, weil damit auch der Context verlorengeht. Vielleicht wäre es eine Option, das Programm bei Inaktivität zu schließen? Oder wenigstens auf einen definierten Punkt zurückzufahren?
|
AW: Connection Exception nach Ruhezustand / Sleep
Hi,
ich hatte mir eine andere (globale) Lösung als try, except erhofft (ggf. mit timer?), da ich sonst in dutzende Prozeduren reinspringen muss... |
AW: Connection Exception nach Ruhezustand / Sleep
Hallo,
vor jeder Methode ein TryConnect machen. |
AW: Connection Exception nach Ruhezustand / Sleep
Zitat:
|
AW: Connection Exception nach Ruhezustand / Sleep
Zitat:
|
AW: Connection Exception nach Ruhezustand / Sleep
Das Problem kommt mir bekannt vor, wenn auch in anderer Konstellation. Bei uns gibt es eine Anwendung, die im mobilen Arbeiten genutzt wird. Es besteht daher immer das Risiko, dass die Verbindung verloren geht. Also gilt das Prinzip, keine datensensitiven Komponenten zu verwenden. Die DB-Verbindung wird nur genutzt, wenn es erforderlich ist. Sie wird zwar nach Möglichkeit offen gehalten, aber wenn die weg ist, kann halt nicht aktualisiert/gespeichert werden. Im schlimmsten Fall gehen die Arbeiten zwischen 2 Kontrollpunkten im Programm verloren.
1. Du könntest dein Programm ähnlich anpassen, was ziemlich viel Aufwand sein könnte. 2. Du baust an allen wichtigen Stellen eine Connect-Prüfung ein und reagierst mit einem Reconnect. Die datensensitiven Elemente verlieren dann aber auch die Daten. Übrigens muss ein Reconnect auch nicht immer funktionieren. 3. Du machst den Anwendern klar, dass eine Datenbankanwendung ein Time-Out kriegen kann. Die Konsequenzen sind dann eben, dass die zuletzt erfassten Daten futsch sind. Wenn die Daten so dramatisch wichtig sind, sollten die sowieso zu ende erfasst werden. Wenn sie nicht so wichtig sind, dürfte es auch kein Drama sein, diese nochmal zu erfassen. Im schlimmsten Fall kann es sogar passieren, dass die tägliche Datenbanksicherung blockiert wird, wenn die Anwendung noch aktiv ist. So einen Fall hatten wir vor 2 Jahren auch mal. Ich würde einen Timer einbauen, der die Verbindung prüft und gegebenenfalls die Anwendung beendet. Man kann dann ja noch eine Warnung ausgeben, dass die Anwendung in x Minuten wegen Inaktivität/Verbindungsfehler geschlossen wird. Zitat:
|
AW: Connection Exception nach Ruhezustand / Sleep
Wir reagieren auf die Windows-Events und beenden die DB-Verbindung.
Beim wiederaufwachen des REchners wird die Verbindung wieder aufgebaut. |
AW: Connection Exception nach Ruhezustand / Sleep
Zitat:
Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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