Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序及其加载的dll的两个实例_C#_Dll_Exe_Multiple Instances_Static Class - Fatal编程技术网

C# 应用程序及其加载的dll的两个实例

C# 应用程序及其加载的dll的两个实例,c#,dll,exe,multiple-instances,static-class,C#,Dll,Exe,Multiple Instances,Static Class,我有一个可执行文件(VC++),它使用不同的命令行参数运行两次,所以基本上有两个实例在运行。这个可执行文件加载一个C#dll,我想知道的第一件事是dll的两个实例是否将加载到两个不同的实例。如果是,那么我在dll中有一个静态类,它将如何实例化,即,静态类将有两个实例,还是在两个进程之间共享 当我尝试运行可执行文件的两个实例时,只有一个实例成功加载dll。进程加载到它自己的AppDomain中,并且它们之间没有共享任何内容,即使dll加载到各自的AppDomain中。因此,每个进程中都有两个单独的

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


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

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

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