2012-10-15 65 views
0

我有一個可執行文件(VC++),它運行兩次不同的命令行參數,所以基本上有兩個實例運行。這個可執行文件加載一個C#dll,首先我想知道的是如果dll的兩個實例將被加載到兩個不同的實例。如果是,那麼我在dll中有一個靜態類,這將如何實例化,即將有兩個靜態類的實例還是將在兩個進程之間共享。它加載的應用程序和DLL的兩個實例

當我嘗試運行可執行文件的兩個實例時,只有一個實例成功加載dll。

回答

0

進程加載到它自己的AppDomain中,它們之間沒有任何共享,即使這些DLL都加載到相應的AppDomain中。所以在每個進程中會有兩個獨立的靜態類實例。其次,DLL在主機進程中加載​​。如果你有私有DLL,那麼它們在這個過程中分開加載,不分享任何內容。

進程空間會有所不同,例如,DLL中的全局變量將針對每個單獨的進程。內存中的代碼可能會被共享(Windows通常使用引用計數來提高該部分的效率)。

相關問題