如何创建一个只加载到内存一次的C#库?

时间:2010-12-31 05:10:06

标签: c# class

我想在C#中创建一个类库DLL,其中包含一个静态类。 该静态类有1个私有静态成员(int),具有公共静态属性。

我想要的是,对于引用此DLL的每个C#应用程序,它将获得相同的静态类。

含义如果Application1将静态成员的值更改为5, 然后Application2尝试获取该属性的值,它将得到:5。

尽管这些是两个不同的应用程序(EXE)。

简单来说,我希望整个类库都是“静态的”, 所以只有一次将它加载到内存中,然后它的单个值将被引用它的不同EXE共享。

谢谢

3 个答案:

答案 0 :(得分:3)

同一台计算机上所有进程之间共享数据的一个有吸引力的解决方案是共享内存。您将不得不重写您的属性以检索共享值,并且该类将多次加载到使用您的库的每个进程中,但如果您正确执行它,它将表现得就像只有一个副本一样。

这是一个帮助您入门的StackOverflow问题:

它链接到您可以使用的完整共享内存库。

答案 1 :(得分:2)

您正在寻找的是某种形式的IPCRPC。一个选项是.NET Remoting

答案 2 :(得分:0)

我是欧麦,我注册了,看起来好像我是另一个用户。

关于 Damien_The_Unbeliever 所说的内容,请允许我描述我一般想做的事情,这样你就可以指导我找到针对该案例的最佳解决方案。

我创建了一个不错的应用程序。 该应用程序具有GUI。 我想添加另一种方法来操作这个应用程序,它将通过为它公开API - 其他应用程序可以使用的方法和属性来操作我的应用程序。

我打算做的是: 使用静态类创建DLL, 把我的应用程序的核心放在那个类中, 然后让GUI,以及可能所有其他应用程序使用该类。

请注意,此课程不仅包含可存储的数据, 但也提到“实时”对象(即开放式通信端口等), 所以存储到磁盘,并从中读取将不是一个好的解决方案。 我需要这个1静态类,可以从所有想要的应用程序访问, 并且所有这些都将获得相同的静态类。

所以,我需要这个类是静态的,我需要库是“静态的”。 (在.NET中没有像“静态库”这样的东西,我知道。请注意我不是在谈论像C ++中的静态库 - 那里还有别的东西......我说的是一个只创建一次的DLL,对于所有人来说使用它的应用程序)。