| 

.NET C# Java Javascript Exception

3
Hallo Entwickler,
eine C#-WinForms-Anwendung besitzt eine Klasse in der zahlreiche Methoden als static markiert sind. Außerdem hat diese Klasse statische Eigenschaften / Felder aus Klassenebene.

Wenn ich das Programm mehrfach starte, teilen sich die Prozesse den statischen Code / die statischen Eigenschaften?

Viele Grüße

Maik
20.09.2013
Maik_1978 674 1 8
3 Antworten
3
static heißt ja nicht const, insofern ließe sich das durch ändern einer der Variablen in einer der Instanzen und Überprüfung in einer anderen herausfinden.
Ich wage jedoch zu behaupten (alles andere wäre schlichtweg unlogisch), dass dem nicht so ist. (nein, geprüft habe ich das nicht)

Nach kurzer Recherge konnte ich folgendes Herausfinden:
Jede Programm-Instanz bekommt ihre eigene AppDomain, in welcher sie läuft. In diese AppDomain wird der gesamte Code für diese eine Programm-Instanz geladen.
So erhält also jede Instanz ihre eigene "Kopie" der statischen Klasse/Variablen.

Ein mögliches Szenario wäre ein Programm, welches Verzeichnisse miteinander vergleicht.
In statischen Variablen speichert man sich die beiden zu vergleichenden Pfade.
Möglicherweise möchte man mehrere dieser Vergleiche zeitgleich durchführen (mal davon abgesehen, dass die Festplatte dann ordentlich zu tun hat und die Programm-Instanzen sich gegenseitig "blockieren").
Wäre doch blöd, wenn auf einmal alle Instanzen die gleichen Pfade prüfen ;)
20.09.2013
Karill Endusa 1,5k 1 9
0
Solange sich die Process in verschiedenen AppDomains befinden (was in der Regel der Fall ist), nein.

Siehe hierzu auch:
What is the scope of a Static Class?
Static Classes being referenced by multiple processes within the GAC??
20.09.2013
Floyd 14,6k 3 9
0
Ganz klar nein. Jede Instanz der Anwendung hat ihren eigenen Speicherbereich, in dem die Variablen abgelegt werden.

Gruß
Klaus
20.09.2013
luedi 2,1k 1 9

Stelle deine Statics-Frage jetzt!