Как программы используют нестатические библиотеки классов?

У меня есть приложение для Windows, которое отправляет строковые и плавающие данные в класс через общедоступное свойство. Та же сборка DLL загружается в Maxscript (3dsmax) во время работы приложения Windows. Я ожидаю, что если я попытаюсь получить доступ к свойству класса, я получу в обоих приложениях одни и те же данные, но это не так. По-видимому, данные передаются в и из экземплярного класса во время выполнения, но когда Maxscript обращается к тем же данным, данные не определены.

Приложение Windows создает экземпляр класса. Maxscript "загружает сборку" как dotNetObject. Данные, отправляемые/получаемые приложением Windows, выполняются только в локальном экземпляре, а не в самом файле myClass.dll? Я знаю, что можно связать приложение C# с 3dsmax через Maxscript во время выполнения. Кто-нибудь поможет объяснить, что здесь может быть не так?


person JohnMills    schedule 12.01.2019    source источник
comment
I would expect that if I try to access a class property ваше предположение неверно, то, что одна и та же сборка .Net загружается в разные процессы, не означает, что они совместно используют данные. Они независимы и находятся в другом адресном пространстве.   -  person TheGeneral    schedule 12.01.2019
comment
@TheGeneral Спасибо, что прояснили это. Я не пытаюсь просто получить доступ к свойству, как вы в том же приложении. У меня есть структура обратного вызова для обоих приложений. Мне нужно узнать больше об обмене данными между приложениями, но я не знаю, с чего начать поиски.   -  person JohnMills    schedule 12.01.2019
comment
@Генерал Спасибо!   -  person JohnMills    schedule 12.01.2019
comment
Межпроцессное взаимодействие (IPC) — это то, что вы хотите исследовать   -  person TheGeneral    schedule 12.01.2019


Ответы (1)


Windows Communication Foundation, также называемый WCF, — отличный API для использования. Я успешно использовал его, когда работал в AutoDesk над 3dsmax. Я использовал его для отправки команд maxscript в приложение (например, 3dsmax) для проведения автоматизированного тестирования.

И последнее, но не менее важное: приведенный выше комментарий от «Генерала» совершенно верен.

Если вам нужен более «родной» способ обмена данными между процессами, я бы предложил использовать карты памяти. https://docs.microsoft.com/en-us/windows/desktop/memory/file-mapping

person C Johnson    schedule 28.01.2019
comment
Функциональность для отправки команд maxscript в 3dsmax по-прежнему присутствует в продукте и используется как минимум последние 6 лет. Я посмотрю, смогу ли я найти какую-нибудь документацию для этого. - person C Johnson; 30.01.2019