0

我有一个可执行文件(VC++),它使用不同的命令行参数运行两次,所以基本上有两个实例在运行。这个可执行文件加载一个 C# dll,我想知道的第一件事是是否将 dll 的两个实例加载到两个不同的实例。如果是,那么我在 dll 中有一个静态类,它将如何实例化,即,是否会有两个静态类实例,或者它会在两个进程之间共享。

当我尝试运行可执行文件的两个实例时,只有一个实例成功加载了 dll。

4

1 回答 1

0

进程加载在其自己的 AppDomain 中,即使 DLL 加载到各自的 AppDomain 中,它们之间也不会共享任何内容。因此,每个进程中都会有两个单独的静态类实例。其次,DLL 在宿主进程中加载​​。如果您有私有 DLL,那么它们会在进程中单独加载,没有任何共享。

进程空间会有所不同,例如,DLL 中的全局变量将特定于每个单独的进程。内存中的代码可能会被共享(Windows 通常使用引用计数来提高该部分的效率)。

于 2012-10-15T06:46:21.087 回答