我知道Web应用程序中使用的静态变量是为Web应用程序中的所有用户共享的。如果我有一个使用某个静态私有变量的库(DLL),那么使用该库的所有应用程序是否共享该变量的值?
例如,假设我的DLL中有以下代码:
private static bool isConnected = false;
public static void Connect()
{
// TODO: Connect.
isConnected = true;
}
public static void Disconnect()
{
// TODO: Disconnect.
isConnected = false;
}
然后在应用A中,我致电myDLL.Connect()
,将isConnected
的值设置为True
。然后我有一些应用程序B执行相同的操作。如果应用程序A稍后调用myDLL.Disconnect()
,则应用程序B是否将isConnected
视为False
,因为这两个应用程序共享具有静态变量的相同DLL文件?在这种情况下,DLL文件在同一文件路径中实际上是相同的文件。
(我之前曾问过一个关于网络应用程序的类似问题here.它没有关系。)
答案 0 :(得分:25)
不,他们不会。它们被加载到单独的AppDomains
中,无法看到彼此的实例。
即使它们引用相同的物理文件,每个应用程序也会获得自己的私有实例。