AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# PC mit USV: Wie Software korrekt beenden?

PC mit USV: Wie Software korrekt beenden?

Ein Thema von Matze · begonnen am 9. Mär 2015 · letzter Beitrag vom 9. Mär 2015
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#1

PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 21:06
Hallo zusammen,

meine C#-Datenbankanwendung läuft auf PCs mit USV.
Für alle, die nicht wissen, was eine USV ist: Eine USV (= Unterbrechungsfreie Stromversorgung) ist ein Akku mit etwas Intelligenz drum herum, der im Falle eines Stromausfalls den PC noch eine Weile am Leben halten kann und dann gezielt herunterfährt.

Ich bin mir nicht sicher, wie USVs normalerweise arbeiten:
Schießen USVs die Prozesse knallhart ab und fahren Windows dann herunter?
Werden die Programme davor ordnungsgeäß beendet?
Ich vermute eher ersteres oder letzteres mit Timeout, damit Windows in jedem Fall herunterfährt bevor der Akku leer ist.

Im "Window_Close"-Ereignis frage ich nach, ob die Software beendet werden soll. Beim Herunterfahren des PCs ohne USV erscheint diese Nachfrage nicht. Mit habe ich es noch nicht testen können.

Wie kann ich denn auf die USV reagieren und die Datenbanken gezielt schließen, sodass keine beschädigten Datenbanken entstehen? Geht sowas mit dem SystemEvents.SessionEnding-Ereignis?

Grüße
Matze

Geändert von Matze ( 9. Mär 2015 um 21:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.607 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 21:23
MSDN-Library durchsuchenWM_QUERYENDSESSION? (Fragen)
In Delphi reagiert die TopLevelForm/MainForm auf WM_QUERYENDSESSION und die VCL ruft dann OnCloseQuery auf.

WM_ENDSESSION = entgültig Beenden, ohne Fragen

Terminate / PostQuitMessage / ... = Beenden, ohne Fragen



Erstmal kommt es drauf an, was für eine USV das ist.

Wenn die genug Energie hat, um den Stromausfall "länger" komplett zu überbrücken, dann braucht sie garnichts zu machen, außer den Strom zu liefern.
Ansonsten haben ordentliche USVs eine Schnittstelle zum PC (Seriell, USB, LAN, PCI, ...) und steuern dort das Runterfahren an.
Entweder über Treiber oder einen ständig mitlaufenden Service.

Entweder es wird sofort runtergefahren und die USV kann nur wenige Minuten überbrücken (bei voller PC-Leistung) oder es wird noch etwas gewartet (Zeit oder bis Akkurestenergie).

Theoretisch könnte man sich auch in den Powerschalter (Taster) reinhängen, aber erstens ist das nicht "sicher" und ich hab es auch noch nie gesehn.

Und billige USVs haben keine Verbindung und irgendwann ist dann auch der Notstrom einfach so alle *blubb*
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 9. Mär 2015 um 21:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 21:30
Hallo himi!

WM_QUERYENDSESSION?
Das wäre auch das, was ich verlinkt habe. Vielleicht geht's wirklich in die Richtung.

Erstmal kommt es drauf an, was für eine USV das ist.
Die USV ist bisher immer von APC gewesen und per USB mit dem PC verbunden. Die APC-Softare veranlasst das Herunterfahren dann.
Schön wäre natürlich eine herstellerunabhängige Lösung.

Wenn die genug Energie hat, um den Stromausfall "länger" komplett zu überbrücken, dann braucht sie garnichts zu machen, außer den Strom zu liefern.
Die USVs können die PCs geschätzte 20 Minuten versorgen.
Aber du kennst die Zustände in China nicht, da haben wir schon ganz andere Erfahrungen gemacht. Kurze Stromausfälle gibt's häufiger und wenn mal an Stromleitungen gearbeitet wird kann es sein, dass man einen halben Tag keinen Strom hat (bei uns wäre das undenkbar).

Grüße
Matze
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.607 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 21:37
Das wäre auch das, was ich verlinkt habe.
Hatte oben noch bissl was hinzugefügt.


APC-Softare: Unabhängig wäre es Grundsätzlich erstmal, da jede USV ihre nötige Sofware mitbringen sollte

und letztendlich wird es darauf hinaus laufen, daß die Software einen stinknormalen "Shutdown"-Befehl ans Windows schickt.
Eventuell kann man in der Software noch vorherrige Events registrieren, so ala "Führe Programm XYZ aus", wenn die USV anspringt oder der wenn der Netzstrom wieder da ist.
Und hoffentlich kann man auch die Art des Runterfahrens einstellen. (Ruhezustand, Runterfahren mit warten oder Runterfahren mit Abschießen, wenn zu lange dauert)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 21:41
Vielen Dank.
Ich schaue morgen mal nach, was sich in der Software genau einstellen lässt und melde mich dann wieder.

Grüße
Matze
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.593 Beiträge
 
Delphi 5 Professional
 
#6

AW: PC mit USV: Wie Software korrekt beenden?

  Alt 9. Mär 2015, 22:19
Schön wäre natürlich eine herstellerunabhängige Lösung.
Das wird nix werden. Jeder USV-Hersteller baut seine eigenen proprietären Chips in seine Geräte. Sogar die Open Source Community, die sich mit apcupsd nur um USVs von APC kümmern, unterstützen nicht alle Modelle dieses einen Herstellers, meist einfach deshalb, weil die Specs fehlen (wie fast immer bei Open Source und/oder Linux). Trotzdem bleibt apcupsd eine tolle Software, die bei weitem nicht so aufgeblasen daher kommt wie das Zeug von APC (das IIRC auf Java basiert).

Und ja, es läuft simpel und einfach so, dass der laufende Dienst den PC ganz normal herunterfährt, wenn die USV die im Dienst eingestellten Grenzen erreicht oder unterschreitet (entweder Ladestand oder Restlaufzeit). Und das funktioniert auch wunderbar.

MfG Dalai
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 10:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf