2010-09-30 1 views
2

1) сборки .NET MyAssembly.dll реализует класс Singleton MyClassВ двух приложениях загружается одна и та же сборка .NET: тот же экземпляр?

2) .NET приложение имеет ссылку на MyAssembly.dll и использует MyClass

3) .NET ActiveX MyActiveX.dll реализует COM Visible класса Wich в ссылках свою очередь, к MyClass в MyAssembly.dll

Мой вопрос: если приложение и ActiveX работают одновременно (ActiveX на веб-странице), у меня есть один или два экземпляра MyAssembly.dll загружен? Мне нужно, чтобы это был один случай для работы синглтона.

Благодаря

ответ

0

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

Ваш компонент ActiveX создается в другом процессе, а затем в приложении .NET. Вы не получаете разделяемую память.

Чтобы создать экземпляр Singleton только один раз, вам нужно запустить один процесс и получить доступ к нему удаленно. Вы могли бы достичь этого путем использования удаленного доступа, DCOM, WCF или чего-то подобного. Вы должны убедиться, что оба процесса доступа к этому экземпляру.

0

Вы собираетесь иметь два экземпляра, они работают в разных процессах.

Если вам нужен один синглтон, доступ к которому осуществляется через элемент управления ActiveX, я бы предложил создать службу WCF для размещения вашего объекта singleton и обеспечения доступа. Затем вы можете написать крошечный COM-видимый клиент, который обращается к службе для поддержки вашего элемента управления ActiveX.

+0

Благодарим вас обоих Стефана и Гая –

 Смежные вопросы

  • Нет связанных вопросов^_^