method - variables globales c# windows forms
¿Una variable estática en una biblioteca(DLL) está compartida por todos los procesos que hacen referencia a esa biblioteca? (1)
Sé que una variable estática utilizada en una aplicación web se comparte para todos los usuarios de la aplicación web. Si tengo una biblioteca (DLL) que usa alguna variable privada estática, ¿todas las aplicaciones que usan esa biblioteca comparten el valor de esa variable?
Por ejemplo, digamos que tengo el siguiente código en mi DLL:
private static bool isConnected = false;
public static void Connect()
{
// TODO: Connect.
isConnected = true;
}
public static void Disconnect()
{
// TODO: Disconnect.
isConnected = false;
}
Luego, en la aplicación A, llamo a myDLL.Connect()
que establece el valor de isConnected
a True
. Entonces tengo una aplicación B que hace lo mismo. Si la aplicación A más tarde llama a myDLL.Disconnect()
, ¿la aplicación B ve isConnected
como False
porque las dos aplicaciones comparten el mismo archivo DLL con una variable estática? El archivo DLL sería, en este caso, literalmente el mismo archivo en la misma ruta de archivo.
(Anteriormente hice una pregunta un tanto similar sobre aplicaciones web here. No está relacionada).
No, no lo harán. Se cargan en AppDomains
separados y no pueden ver las instancias de los demás.
Incluso si se refieren al mismo archivo físico, cada aplicación obtiene su propia instancia privada del ensamblaje.