Static members behavior with multiple instance of

2019-02-17 21:23发布

问题:

I'm working on my Window Application and i'm using some static members.

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

Now if I install my application on computer and open two instance of same application. Will 'connectionString' common to the two instances?? Or every instance has its connectionString ?

回答1:

The variable static or not is a part of your application memory. When you open 2 instances of your application you create two distinct memory locations in the OS, so there is not any relation between those 2 variables at all.

If you want to create one (relation), you have to look on different IPC (Inter Process Communication) methods available in OS, like:

  • Memory Mapped Files
  • Named Pipes
  • IPC Mechanisms in C# - Usage and Best Practices


回答2:

No, Each application instance are isolated from one another using AppDomain. Thus each application instance will run in a seperate AppDomain and cannot access the variables from other domain. To do communicate with different domain we need to use Remoting , WCF Service



回答3:

Every instance.

Static members are allocated on a per AppDomain basis. If you were to spawn a new AppDomain from within your current one.. they would be different.