Lade...
 

CX_SYSTEM_OBJECT::ResetModules

CX_SYSTEM_OBJECT::ResetModules

(früher: ReinitializeInstantView)

217834 sollte nur noch der neue Name ResetModules verwendet werden.

Beschreibung:

Der Aufruf dieser Methode versetzt alle Module in den geladenen (geparsten), aber noch nicht initialisierten Startzustand ("loaded"-Zustand). Davon ausgenommen sind das aktuelle Modul, das GLOBAL Modul und die Module des aktuellen Call-Stacks.

227185 wird zusätzlich geprüft, ob eines der geschützten Module offene Fenster hat und falls ja, dann werden alle von diesen Modulen verwendeten Widget-Provider-Module ebenfalls geschützt. Diese Regel ist notwendig, damit die importierten Widgets in den noch offenen Fenstern nach ResetModules nicht in einem uninitialisierten Modul arbeiten. Um nachzuvollziehen, welche Module vor ResetModules geschützt sind, kann der neue cx.rqdsp.resetModules-Logger verwendet werden.

231940 werden zusätzliche alle Module aus CX_SYSTEM_OBJECT::GetResetModulesProtectionSet (und natürlich deren Basismodule) von ResetModules ausgeschlossen.

 

Alle Variablen mit Modul-Scope (auch statische Variablen) erhalten den Initialwert INVALID und alle Fenster werden geschlossen. Statische Variablen aus Basismodulen werden nur dann zurückgesetzt, wenn alle davon abgeleiteten Module zurückgesetzt wurden. Bei der nächsten an solch ein (zurückgesetztes) Modul gesendeten Message wird dann auch wieder INITIALIZE getriggert. Das Modul wird durch diesen Aufruf nicht neu aus dem Quellcode geladen. Änderungen im Quellcode haben keinen Einfluss auf die zurückgesetzten Module. (Siehe auch: ReloadModules)

In den Modulen selbst sollte diese Methode nicht angewendet werden, es wird stattdessen empfohlen, die Message CYBER_ENTERPRISE_SET zu schicken, diese im .cxp Projekt Modul (früher auch als GLOBAL Modul definiert) abzufangen und erst dort die Methode auszuführen, damit das Hauptmodul nicht entladen wird.

Code-Beispiel:
2  "CX_DATABASE_2A" GetManager(OBJECT) Call(OpenDatabase) // open another database
SystemObject Call(ResetModules)  // prevent variables referring to objects in the old database

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top    
Stack(Out) Top    
Funktionsaufruf: Call(ResetModules)