Как разделить System.Object в памяти между двумя или более программами? - PullRequest
1 голос
/ 14 декабря 2009

есть ли какая-либо библиотека, пример кода, проект с открытым исходным кодом и т. Д., Помогающие мне делиться объектами (набором данных, коллекцией, ...) между двумя или более программами с прямым или косвенным доступом к памяти.
если нет способа сделать это, пожалуйста, покажите мне другие способы заставить мое приложение работать.

язык: c # .net
платформа: vista x64

Ответы [ 5 ]

1 голос
/ 14 декабря 2009

Я считаю, что ваша лучшая и самая безопасная ставка - проверить Именованные каналы через WCF. Прямо из MSDN:

Именованный канал - это объект в Ядро операционной системы Windows, такое как раздел общей памяти, процессы могут использовать для общения. именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одной машине.

1 голос
/ 14 декабря 2009

Вы хотите взглянуть на WCF - объединенную платформу Microsoft WebServices and Remoting. Он предоставляет ряд опций для межпроцессного взаимодействия, от XML через http до двоичного через TCP / IP или по именованным каналам.

Некоторые другие статьи:

0 голосов
/ 14 декабря 2009

Я не очень уверен насчет , как это может быть выполнено, но это возможно, если сборки находятся в одном домене. Если одна из сборок загружает другую сборку и дает ей указатель / ссылку, через которую вторая сборка может вызывать первую, тогда можно будет вызвать метод внутри первой сборки с параметрами.

В одном из моих проектов, который является надстройкой COM, написанным на C #, COM dll создает два разных класса из сборки, и они могут совместно использовать статические данные.

0 голосов
/ 14 декабря 2009

вы можете использовать файл определенным образом или базу данных или любую другую постоянную технологию, обмен сообщениями, WCF (или протоколы межпроцессного взаимодействия с более низкими показателями)

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

0 голосов
/ 14 декабря 2009

Я ничего не знаю, поэтому оставлю кого-нибудь еще отвечать. Если это невозможно и в зависимости от того, нужно ли обоим приложениям знать об изменениях в режиме реального времени, вы можете сериализовать ваш класс в файл (например, XML) для обмена информацией о текущем состоянии.

...