【问题标题】:Accessing the public variable of class library from 2 different application从 2 个不同的应用程序访问类库的公共变量
【发布时间】:2018-07-06 10:32:04
【问题描述】:

我有一个用 c# 开发的类库,它具有如下所示的类似内容。它有一个类ClassLib。它有一个公共变量somevariable 和2 个方法。一个方法将值分配给这个变量,一个方法使用这个变量。

class ClassLib
{
    public string somevariable;
    public void SomeMethod1()
    {
        somevariable = "someData";
    }
    public void SomeMethod2()
    {
        string finalValue = somevariable;
    }
}

现在我有 2 个不同的 Windows 服务,其中引用了这个类库。

Windows Service 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 的值在任何时候都会是 "Application 1 Data" 吗?这些值会重叠吗?

【问题讨论】:

    标签: c# public class-library


    【解决方案1】:

    没有。每个 Windows 服务都作为自己的进程运行,这意味着它有自己的堆。所以这两个服务之间没有共享内存,即使它们引用了同一个 DLL。

    有一些方法可以创建在进程之间共享的数据,但前提是代码执行了一些不寻常的事情。普通变量不共享。

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多