是引用该库的所有进程共享的库(DLL)中的静态变量吗?
我知道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
的值isConnected
为True
。 然后我有一些应用程序B执行相同的操作。 如果应用程序A稍后调用myDLL.Disconnect()
,则应用程序B是否将isConnected
视为False
因为这两个应用程序共享具有静态变量的同一DLL文件? 在这种情况下,DLL文件在同一文件路径中实际上是相同的文件。
(我之前在这里问了一个关于Web应用程序的类似问题。它没有关系。)
不,他们不会。 它们被加载到单独的AppDomains
,无法看到彼此的实例。
即使它们引用相同的物理文件,每个应用程序也会获得自己的程序集私有实例 。