是引用该库的所有进程共享的库(DLL)中的静态变量吗?

时间:2011-07-25 14:57:08

标签: c# dll static static-libraries static-variables

我知道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.它没有关系。)

1 个答案:

答案 0 :(得分:25)

不,他们不会。它们被加载到单独的AppDomains中,无法看到彼此的实例。

即使它们引用相同的物理文件,每个应用程序也会获得自己的私有实例