Wiem, że zmienna statyczna używana w aplikacji internetowej jest udostępniana wszystkim użytkownikom w aplikacji internetowej. Jeśli mam bibliotekę (DLL), która używa pewnej statycznej zmiennej prywatnej, czy wszystkie aplikacje korzystające z tej biblioteki dzielą wartość tej zmiennej?Czy zmienna statyczna w bibliotece (DLL) jest współdzielona przez wszystkie procesy odwołujące się do tej biblioteki?
Załóżmy, że mam następujący kod w moim DLL:
private static bool isConnected = false;
public static void Connect()
{
// TODO: Connect.
isConnected = true;
}
public static void Disconnect()
{
// TODO: Disconnect.
isConnected = false;
}
Następnie w zgłoszeniu A, wzywam myDLL.Connect()
który ustawia wartość isConnected
do True
. Potem mam aplikację B, która robi to samo. Jeśli aplikacja A później wywołuje myDLL.Disconnect()
, czy aplikacja B widzi isConnected
jako False
, ponieważ te dwie aplikacje korzystają z tego samego pliku DLL ze zmienną statyczną? Plik DLL w tym przypadku byłby dosłownie tym samym plikiem w tej samej ścieżce pliku.
(I wcześniej zadał podobne pytanie nieco o aplikacjach internetowych here. To nie jest związane.)
+1 interesujące pytanie – Rahul