当前位置: 首页 > 编程语言 > C#

2个不同进程能否共享同一个DLL数据?分享

时间:2023-04-10 20:37:51 C#

同一个DLL数据可以被2个不同的进程共享吗?我有两个不同的C#应用程序同时运行。我希望它们都能够访问DLL的相同“实例”(也在C#中)。DLL保存了一些我想返回给两个应用程序需求的数据。我的DLL是线程安全的,所以我希望这是可能的,但我不知道如何实现。任何帮助或建议将不胜感激。进程空间会有所不同,因此,例如,DLL中的全局变量将特定于每个单独的进程。内存中的代码可能是共享的(Windows通常使用引用计数来提高这部分的效率)。如果你想在两个进程之间共享在DLL中访问的信息,那么似乎有必要使用某种IPC(进程间通信)机制,如套接字、共享内存、管道等。DLL没有实例,它被加载到主机进程。在两个应用程序中引用程序集并使用它的类/方法。如果你想避免为两个应用程序部署相同的程序集,你可以把它放在GAC中。这个有可能。您可以在GAC中安装DLL(需要强名称程序集),以便两个应用程序都可以轻松访问它。或者将它放在一个文件夹中,让两个应用程序在该文件夹中搜索dll。MSDN支持文章我不知道这是否可以在C#中完成,但在C++中,如果要共享的信息不是太复杂,您也可以使用共享内存部分。您只需使用例如互斥锁同步对此资源的访问有一篇关于该主题的好文章:http://www.codeproject.com/KB/threads/SharedMemory_IPC_Threads.aspx如果您的DLL创建一个命名的MemoryMappedFile(在内存中或磁盘上),则两个应用程序可以共享DLL创建的内存。每个应用程序都会有一个不同的指向共享内存的指针,但内存实际上是共享的。您必须为共享内存使用相同的名称,并且您要靠自己来保持进程之间的线程安全。(已命名的信号量或互斥锁可以工作,但CriticalSection不会。)以上是C#学习教程:两个不同的进程能否共享同一个DLL数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: