Статическая библитека на C#

150
20 сентября 2019, 22:40

Потребовалось мне создать службу Windows и десктопное приложение. Обе этих программы, в идеале, должны работать с одной и той же коллекцией пользовательского типа данных, чтобы одновременно и быстро реагировать на любые изменения в этой коллекции. Возможен, конечно, вариант с использованием каког-либо конфигурационного файла, об изменениях в котором десктопное приложение сообщит службе с помощью команды, но этот вариант не очень удобен. На данный момент оба приложения используют одну и ту же библиотеку (dll), в которой используемая коллекция и находится, но каждая из прог использует свой экземпляр и поэтому служба не видит, какие изменения были внесены в коллецию десктопным приложением и наоборот. Отсюда вопрос: можно ли создать "Статическую" библиотеку на c# либо решить проблему передачи данных другим способом?

UPD:

Решение проблемы нашел. Использовал NamedPipes. Подробно об этом способе написал вот тут. Спасибо огромное за помощь!

Answer 1

Библиотека не хранит вашу коллекцию, она хранится в памяти, по этому никакая "статичная" библиотека не поможет вам решить вашу проблему. По сути вы хотите выделить память для доступа из обоих приложений. В .Net приложениях сделать это невозможно, по тому что каждый апп запускается в своем домене.

По этому для решения проблемы вам нужен некий посредник, к которому ваши приложения будут обращаться за пользовательскими данными. Способы решения зависят от объемов данных, способа их изменения и тп.

Если речь идет о обмене небольшого объема данных, то можно применить такую технику как Memory Mapped Files, изменения можно определять по блокировке\разблокировке доступа.

Если объем данных значительный, то лучше будет воспользоваться базой данных и реализовать подписку на изменения.

Так же можно воспользоваться шиной данных, например msmq.

READ ALSO
Как запретить игроку отклоняться от оси x и y? Чтобы он ходил ровно по оси x и y

Как запретить игроку отклоняться от оси x и y? Чтобы он ходил ровно по оси x и y

Как запретить игроку отклонять от оси x и y? Чтобы он ходил ровно по оси x и y

202
combobox search

combobox search

Интересует вопрос как в combobox реализовать поиск не по первой букве/цифре/символу, а по вхождению в строку?

168
Можно ли передавать объект как другой тип, если у него есть операторы неявного преобразования

Можно ли передавать объект как другой тип, если у него есть операторы неявного преобразования

Хотелось бы узнать, допустим есть класс, который можно инициализировать как через конструктор, так и через оператор неявного преобразования:

148