2010-09-30 91 views
2

1).NET大会MyAssembly.dll程序实现Singleton类MyClass的两个应用程序加载相同的.NET程序集:相同的实例?

2).NET APP具有MyAssembly.dll程序基准,并使用MyClass的

3)甲.NET ActiveX MyActiveX.dll实现一个COM Visible类,它依次引用MyClass in MyAssembly.dll

我的问题是:如果应用程序和ActiveX在同一时间运行(网页中的ActiveX),我是否有加载一个或两个MyAssembly.dll实例?我需要它成为单身人士工作的一个例子。

谢谢

回答

0

程序集被加载到应用程序域中,静态字段(其中单例是基于的)被每个应用程序域实例化。每个进程至少有一个应用程序域,所以每个进程至少有一个实例。

您的ActiveX组件在另一个进程中实例化,然后在.NET应用程序中实例化。你没有获得共享内存。

要仅实例化一次singleton,您需要启动一个进程并远程访问它。你可以通过使用远程,DCOM,WCF或类似的东西来实现这一点。你需要确保两个进程访问这个实例。

0

您将有两个实例,它们在不同的进程中运行。

如果你需要一个通过ActiveX控件访问的单例,我会建议创建一个WCF服务来托管你的单例对象并提供访问权限。然后,您可以编写一个微型COM可见客户端,访问该服务以支持您的ActiveX控件。

+0

谢谢Stefan和Guy – 2010-10-01 13:58:57

相关问题