我有一个用c#开发的类库,它有类似的东西,如下所示。它有一个类ClassLib。它有一个公共变量somevariable和2个methods.One方法分配这个变量的值,有一个方法使用这个变量。
class ClassLib
{
public string somevariable;
public void SomeMethod1()
{
somevariable = "someData";
}
public void SomeMethod2()
{
string finalValue = somevariable;
}
}现在我有了两个不同的窗口服务,其中引用了这个类库。
在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();
}
}这就调用了这两个方法。
这两个窗口服务现在运行continuously.So --我的问题是,如果两个服务同时运行,并且引用类库中的同一个类,这会影响somevariable的值吗?由于一个应用程序正在分配该值,而另一个应用程序试图使用来自SomeMethod1的现有值。
换句话说,在WindowsService2中,当调用c1.SomeMethod2()时,somevariable的值在任何时候都会是"Application 1 Data"吗?这些值会重叠吗?
发布于 2018-07-06 10:39:23
不是的。每个Windows服务都作为自己的进程运行,这意味着它有自己的堆。因此,两个服务之间没有共享内存,即使它们引用相同的DLL。
有一些方法可以在进程之间创建共享的数据,但只有在代码做了一些不寻常的事情时才能这样做。正常变量不共享。
https://stackoverflow.com/questions/51208448
复制相似问题