Lebensdauer der statischen Variablen und Wiederverwendung von Anwendungspools

8

Ich verstehe die Lebensdauer von statischen Variablen in Bezug auf Anwendungen (Konsole / Windows), aber ich bin mir nicht sicher, ob ich ihr Leben im Kontext von Web-Apps (asp.net, mvc, Web-API, etc.) verstehe. .

Wenn IIS den App-Pool wiederverwendet, werden statische Variablen auf die Standardwerte ihres Typs zurückgesetzt (Integrale = 0, Referenztypen = null usw.). Ich frage mich jedoch, ob Inline-Initialisierer nach dem Recycling neu initialisiert werden Oder wird der Typ IMMER automatisch vergeben?

Beispiel (e):

%Vor%

Würde das statische Feld rng nach dem ersten Aufruf nach einem Recycle neu initialisiert werden? Oder muss ich Null-Überprüfungen implementieren, bevor Sie versuchen, die Variable zu verwenden, beispielsweise:

%Vor%

Stimmt die Annahme, dass nach einer IIS-Wiederverwendung die Variable rng in Beispiel 1 null ist, bis sie wie in Beispiel 2 neu initialisiert wird?

HINWEIS: Ich bin mir der Threadsicherheitsprobleme im obigen Beispiel voll bewusst, es ist nur ein kurzes Beispiel, um meine Frage zu veranschaulichen. In einem realen Szenario der obigen Idee würde ich ein richtiges Sperrmuster implementieren.

    
Mike Johnson 19.12.2013, 00:10
quelle

1 Antwort

5

Ok, also konnte ich nicht anders und machte einen schnellen Test.

Das war ungefähr so ​​wie in Beispiel 1, außer bei einer Seitenausgabe, damit ich es tun konnte, ohne an den Prozess angehängt zu sein,

Es hat bestätigt, was ich dachte - Die statische wird auf den Inline-Initialisierungswert zurückgesetzt.

    
Jon Egerton 19.12.2013, 00:49
quelle