我有一个可执行文件(VC ++),它使用不同的命令行参数运行两次,所以基本上有两个实例在运行。这个可执行文件加载了一个C#dll,首先我要知道的是,是否将两个dll实例加载到两个不同的实例中。如果是,那么我在dll中有一个静态类,如何实例化,即,是否会有两个静态类实例,或者它将在两个进程之间共享。
当我尝试运行可执行文件的两个实例时,只有一个实例成功加载了dll。
答案 0 :(得分:0)
进程被加载到它自己的AppDomain中,即使DLL被加载到各自的AppDomain中也没有任何共享。因此,每个进程中都会有两个单独的静态类实例。其次,DLL在主机进程中加载。如果您有私有DLL,那么它们将在过程中单独加载,不分享任何内容。
进程空间将不同,因此,例如,DLL中的全局变量将特定于每个单独的进程。内存中的代码可能会被共享(Windows通常使用引用计数来提高该部分的效率)。