OBS/Adminhilfe/Semaphoren
Dies ist eine zugriffsgeschützte Seite.
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
Datei-Semaphoren
Unit
lib_Semaphore
Methoden und Funktionsweise
Die Unit enthält eine Klasse zum Verwalten von Datei-Semaphoren, dazu eine globale Variable der Klasse und globale Funktionen für den Zugriff auf Semaphoren in der Klasse. Die globale Variable heißt GL_Semaphore und wird per initialization beim Programmstart instanziiert. Um eine Semaphore anzulegen, kann die Instanz selbst verwendet werden. Die globalen Funktionen unterstützen die Anlage mehrerer Semaphoren auf einmal. Bei Übergabe mehrerer Semaphoren sind diese mit Komma, Zeilenumbruch (CRLF), Semikolon oder Pipe zu trennen. Alle Semaphoren werden in der Instanz angelegt. Beim schließen des Programms werden automatisch alle noch enthaltenen Semaphoren freigegeben.
Beispiele
Einfaches Lock in einer Methode
if (SEMA_New('MyLock')) then begin //Versucht eine Semaphore anzulegen; Datei: MyLock.Lock
...
SEMA_Release('MyLock'); //Löschen der angelegten Semaphore
end;
Anlage Lock und Freigabe an anderer Stelle
var cSema : string='';
...
if (SEMA_New('MyLock',cSema)) then begin //Versucht eine Semaphore anzulegen; Datei: MyLock.Lock
...
end;
...
SEMA_Release(cSema); //Löschen der angelegten Semaphore
Werden Semaphoren benötigt, um z. B. den Zugriff auf bestimmte Listen oder Masken zu sperren, so muss im Create oder Init die Semaphore angelegt werden. Die Semaphore darf aber erst beim Schließen des Fensters wieder freigegeben werden. Um sich zu merken, welche Semaphore(n) am Ende freigegeben werden können, gibt es die Funktion SEMA_New auch mit einem Rückgabewert wurde die angelegten Semaphoren.