跨越不同进程的C#库的单个实例

时间:2011-08-10 10:49:56

标签: c# .net dll excel-vba com-interop

我创建了一个C#.Net WinForms项目,该项目使用了很少的库,这些库也是由我创建的。现在我正在创建一个COM包装器,并希望通过VBA从Excel文件中使用相同的库。但我不希望Excel创建库的新实例。我需要使用WinForms项目加载的库的相同实例。请提出建议。

WinForm App 
|- Library1.dll
|- Library2.dll 
. 
Excel
|-ComWrapper
|-Library1.dll 
|-Library2.dll

我试图以图解方式解释当前的情况。在上面的例子中,将创建两个Library1.dll和library2.dll实例,因为它们是从不同进程调用的。我需要在内存中只有一个library1.dll和library2.dll实例。

1 个答案:

答案 0 :(得分:0)

唯一容易实现的方法是将COM包装器注册为COM +对象,并将其配置为“激活”选项卡中的“服务器应用程序”。 然后,您需要在winforms应用程序和Excel文件中使用该COM +对象。