具有多个应用程序实例的静态成员行为 – C#

我正在使用我的Window应用程序,我正在使用一些静态成员。

public class MyParameter { public static string connectionString = "..."; } 

现在如果我在计算机上安装我的应用程序并打开同一应用程序的两个实例 ‘connectionString’会对两个实例共同吗? 或者每个实例都有其connectionString?

变量static或not是应用程序内存的一部分。 当您打开应用程序的 2个实例时,在OS中创建两个不同的内存位置,因此这两个变量之间根本没有任何关系。

如果要创建一个(关系),则必须查看OS中可用的不同IPC(进程间通信)方法,例如:

  • 内存映射文件
  • 命名管道
  • C#中的IPC机制 – 用法和最佳实践

不,每个应用程序实例都使用AppDomain相互隔离。 因此,每个应用程序实例将在单独的AppDomain中运行,并且无法访问其他域中的变量。 要与不同的域进行通信,我们需要使用远程处理,WCF服务

每个实例。

静态成员基于每个AppDomain分配。 如果您要从当前的AppDomain生成一个新的AppDomain ,它们会有所不同。