【问题标题】:Single instance of a C# library across different processes跨不同进程的 C# 库的单个实例
【发布时间】:2011-08-10 10:49:56
【问题描述】:

我创建了一个 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 的实例。

【问题讨论】:

  • 您不会阻止不同的进程与您启用 Com 的库进行通信。您可以明显地阻止您自己的应用程序这样做,当然这不会发生,没有一行代码很难说出您的实际要求。
  • 你想完成什么。在两者之间共享一些状态?在我的术语书中,“图书馆实例”没有条目。描述你正在努力完成的事情将帮助与我在同一条船上的其他人
  • 好的,我会解释这个场景。

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


【解决方案1】:

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

【讨论】:

  • “易得”和COM+同句?
  • 哈哈,好一个 ;-) - “容易获得”我的意思是他不需要创建自己的任何基础设施 - 我个人不会使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2016-02-16
  • 2011-05-05
  • 1970-01-01
相关资源
最近更新 更多