SingleInstance Codeunit

12. Januar 2011 18:06

Hallo,

ich bin auf das Property "SingleInstance" in einer Codeunit gestoßen. Ich habe im MSDN folgendes Bsp. hier ausprobiert. Sobald die SingleInstance einmal "aufgerufen" wird, werden Änderungen erst nach dem Programmneustart (Client) nachgezogen. Es wird jeweils nur eine Instanz des ganzen benutzt. Soweit, so gut.

Was hat das für einen Sinn? Kann mir jemand ein Bsp. aus der Praxis geben, wann es sinnvoll ist sowas zu nutzen? Leider ist mir der Sinn noch nicht einleuchtend.

Danke & Gruß

Martin

Re: SingleInstance Codeunit

12. Januar 2011 18:44

Das benutzt man, um Daten zwischenzuspeichern und zwischen den verschiedensten Objekten austauschen oder von überall darauf zugreifen zu können. Timo hat zB auf diesem Weg eine schöne Lösung zur Übersteuerung des Standard-Druckers gemacht - musst mal nach suchen.

Re: SingleInstance Codeunit

12. Januar 2011 18:56

Hab schon gefunden :)

Wird das Objekt beim Starten der Fin.exe eingeladen oder erstmalig, wenn die CU angesprochen wird? Gilt diese Einstellung dann nur für den Client oder Global?

Re: SingleInstance Codeunit

12. Januar 2011 19:47

Hallo,

die SingleInstance-Codeunits werden erst dann geladen, wenn sie das erste mal von dem jeweiligen Client angesprochen werden, verbleiben dann aber bis zum Schließen bzw. Wechsel des Mandanten bzw. der Datenbank im Arbeitsspeicher des Clients.
Somit stehen die Werte nur dem einen Client zur Verfügung.

Und genau, weil sie ab dem ersten Aufruf im Arbeitsspeicher verbleiben, sollte man sich genau überlegen, was man in eine solche SI-Codeunit an Funktionalität packt.
Je größer die Codeunit wird, umso mehr Speicher belegt sie.
Daher packe ich z. B. keine komplexe Funktionalität in diese Art von Codeunits.

Re: SingleInstance Codeunit

12. Januar 2011 19:58

Super,

gedacht ist ebenfalls die Lösung der Druckerzuweisung. Das wird dann nur eine kleinere Funktion sein. Da diese SI nur für den jeweiligen Client ist, bietet sich soetwas an. Wieder was gelernt :)