C# 从2个不同的应用程序访问类库的公共变量
我有一个用c#开发的类库,它有如下类似的功能。它有一个classC# 从2个不同的应用程序访问类库的公共变量,c#,public,class-library,C#,Public,Class Library,我有一个用c#开发的类库,它有如下类似的功能。它有一个classClassLib。它有一个公共变量somevariable和两个方法。一个方法为该变量赋值,另一个方法使用该变量 class ClassLib { public string somevariable; public void SomeMethod1() { somevariable = "someData"; } public void SomeMethod2() {
ClassLib
。它有一个公共变量somevariable
和两个方法。一个方法为该变量赋值,另一个方法使用该变量
class ClassLib
{
public string somevariable;
public void SomeMethod1()
{
somevariable = "someData";
}
public void SomeMethod2()
{
string finalValue = somevariable;
}
}
现在我有两个不同的windows服务,其中引用了这个类库
在Windows服务1中,它有一些类似的代码
public class Application1
{
public void AppMethod1()
{
ClassLib c1 = new ClassLib();
c1.somevariable = "Application 1 Data";
c1.SomeMethod2();
}
}
此类将值分配给公共变量,并调用第二个方法来使用它
Windows服务2:
public class Application2
{
public void AppMethod2()
{
ClassLib c1 = new ClassLib();
c1.SomeMethod1();
c1.SomeMethod2();
}
}
这将调用这两种方法。这两个windows服务连续运行。所以现在我的问题是,如果两个服务同时运行并引用类库中的同一个类,这会影响
somevariable
的值吗。因为一个应用程序正在分配值,而另一个应用程序正在尝试使用SomeMethod1
中的现有值换句话说,在WindowsService2中,当调用
c1.SomeMethod2()
时,somevariable
的值是否会在任何时间点变为“应用程序1数据”
?值是否重叠?否。每个Windows服务都作为自己的进程运行,这意味着它有自己的堆。因此,两个服务之间没有共享内存,即使它们引用相同的DLL
有一些方法可以创建在进程之间共享的数据,但前提是代码执行了一些异常操作。正常变量不共享