Доступ к публичной переменной библиотеки классов из 2 разных приложений - PullRequest
0 голосов
/ 06 июля 2018

У меня есть библиотека классов, разработанная на c #, которая имеет нечто похожее, как показано ниже. Имеет класс ClassLib. Он имеет одну открытую переменную somevariable и 2 метода. Один метод присваивает значение этой переменной, и один метод использует эту переменную.

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

Теперь у меня есть 2 разные службы 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();
    }
}

Это вызывает оба метода.
Эти 2 службы Windows работают непрерывно. Итак, теперь мой вопрос: если обе службы работают одновременно и ссылаются на один и тот же класс в библиотеке классов, это повлияет на значение somevariable. Поскольку одно приложение присваивает значение, а другое пытается использовать существующее значение из SomeMethod1.
Другими словами, в WindowsService2, когда вызывается c1.SomeMethod2(), будет ли значение somevariable "Application 1 Data" в любой момент времени? Будут ли значения перекрываться?

1 Ответ

0 голосов
/ 06 июля 2018

Нет. Каждая служба Windows работает как собственный процесс, то есть имеет свою собственную кучу. Таким образом, между двумя службами нет общей памяти, даже если они ссылаются на одну и ту же DLL.

Существуют способы создания данных, которые разделяются между процессами, но только если код делает что-то необычное. Нормальные переменные не являются общими.

...