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

Dev*_*rke 21 c# dll static static-variables static-libraries

我知道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;
}
Run Code Online (Sandbox Code Playgroud)

然后,在应用程序A,我把myDLL.Connect()它设置的值isConnectedTrue.然后我有一些应用程序B执行相同的操作.如果应用程序稍后调用myDLL.Disconnect(),并应用B见isConnectedFalse,因为这两个应用程序共享同一个静态变量相同的DLL文件?在这种情况下,DLL文件在同一文件路径中实际上是相同的文件.

(我之前在这里问了一个关于Web应用程序的类似问题.它没有关系.)

Mrc*_*ief 26

不,他们不会.它们是分开加载的,AppDomains无法看到彼此的实例.

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

  • 简短回答 - 是的.长答案:这里的关键字是"AppDomain".如果有`X AppDomains`那么会有`X`实例.默认情况下,每个App都有自己的AppDomain,这意味着对于`X`应用程序,会有`X`实例.有一些方法可以在同一个域中加载多个应用程序,但这是一个不同的讨论. (3认同)

归档时间:

查看次数:

6014 次

最近记录:

14 年,1 月 前