0

異なるコマンド ライン パラメータで 2 回実行される実行可能ファイル (VC++) があるため、基本的に 2 つのインスタンスが実行されています。この実行可能ファイルは C# dll をロードします。最初に知りたいのは、dll の 2 つのインスタンスが 2 つの異なるインスタンスにロードされるかどうかです。はいの場合、dll に静的クラスがあります。これをインスタンス化する方法、つまり、静的クラスの 2 つのインスタンスがあるか、2 つのプロセス間で共有されますか。

実行可能ファイルの 2 つのインスタンスを実行しようとすると、1 つのインスタンスのみが dll の読み込みに成功します。

4

1 に答える 1

0

プロセスは独自の AppDomain にロードされ、それぞれの AppDomain に DLL がロードされていても、それらの間で何も共有されません。したがって、各プロセスには静的クラスの 2 つの個別のインスタンスが存在します。次に、DLL がホスト プロセスにロードされます。プライベート DLL がある場合、それらはプロセスで個別にロードされ、共有は一切行われません。

プロセス スペースは異なるため、たとえば、DLL 内のグローバル変数は、個別のプロセスごとに固有になります。メモリ内のコードが共有される可能性があります (Windows は通常、その部分をより効率的にするために参照カウントを使用します)。

于 2012-10-15T06:46:21.087 に答える