想象一下这个简单的场景:
我在.NET中创建了一个Class-Library DLL,它有1个类, 这个类有2个字段(具有匹配的Get + Set属性): - int A - int B
现在我创建了一个名为Program1的可执行文件,它引用了该DLL,并实例化了上面提到的类, 我还创建了第二个可执行文件,名为Program2,它也引用了该DLL,并实例化了所提到的类。
通过这种方式,我有2个程序:Program1和Program2, 并且两者都将在DLL中创建类的单独实例。
但是如果我希望Program1和Program2与该类的 1个共享实例交谈呢?
我该怎么做?
答案 0 :(得分:5)
你不能这样做。程序集在自己的AppDomain
中加载,在Windows上拥有自己的进程。因此,默认情况下,实例独立存在。
您可以使用一些共享内存解决方案,例如自.NET 4.0以来支持的Memory-Mapped Files。可以在SO上找到旧版.NET的参考:How to implement shared memory in .NET?。