cpEnterCriticalSectionEvent


Beschreibung

Dieser Befehl dient zum Absichern kritischer Programmbereiche.

Wird ein Codeteil mit cpEnterCriticalSectionEventcpLeaveCriticalSectionEvent gekapselt, wird dieser Codeteil in jedem Fall abgearbeitet, auch wenn Ereignisse stattfinden, die die eingeschlossenen Befehlszeilen erneut ausführen möchten, bevor der gesamte Teil vollständig ausgeführt ist.

Gleichzeitig landen weitere Aufrufe dieses Bereichs in einer Warteschlange. Sie werden der Reihe nach ausgeführt. Kein Teil geht verloren.

Es kann dadurch allerdings zu Verzögerungen im Ablauf der gesamten Zeitmessung kommen. Daher diese Befehle sparsam und nur dort einsetzen, wo es unabdingbar ist.

Syntax


Befehl cpEnterCriticalSectionEvent
Funktion Absichern von Bereichen gegen ungewollte mehrfache Aufrufe. Nur gültig im Event, in dem der Code eingefügt ist.
Typ

Codebeispiel

begin
  ...
  cpEnterCriticalSectionEvent;
  if cpGetPowerOnSlots() then
    cpPowerOnSlots(false)
  else
    cpPowerOnSlots(true);
  cpSleep(5000);
  cpLeaveCriticalSectionEvent;
  ...
end.

Dieser Code prüft, ob Strom auf der Bahn ist. Ist das der Fall, wird der Bahnstrom abgeschaltet, ist der Strom aus, wird er aktiviert.

Allerdings ist die Befehlsfolge hier in einen kritischen Bereich gekapselt. Versucht irgendein anderes Ereignis, cpGetPowerOnSlots vor Ablauf der 5 sekündigen Wartezeit auszuführen, wird dieses Event hinten angestellt.

Das gilt innerhalb eines Events, z.B. KeyDown Event, NICHT global für das gesamte AddOn!

Weitere Informationen finden sich in der Cockpit-XP Dokumentation zu AddOns (CpXP-AddOn.pdf) auf den Seiten 17 und 18.



Start - FAQ - Glossar - Sitemap - Impressum

 
cockpit-xp/addon/befehlsreferenz/cpentercriticalsectionevent.txt · Zuletzt geändert: 2020/11/28 12:15 (Externe Bearbeitung)