簡體   English   中英

兩個應用程序加載相同的.NET程序集:相同的實例?

[英]Two applications load same .NET assembly: same instance?

1).NET Assembly MyAssembly.dll實現了Singleton類MyClass

2).NET APP引用了MyAssembly.dll並使用MyClass

3).NET ActiveX MyActiveX.dll實現一個COM Visible類,該類依次引用MyAssembly.dll中的 MyClass

我的問題是:如果應用程序和ActiveX同時運行(網頁中的ActiveX),我是否加載了一個或兩個MyAssembly.dll實例? 我需要將其作為單例工作的一個實例。

謝謝

您將有兩個實例,它們在不同的進程中運行。

如果您需要通過ActiveX控件訪問的單例,我建議創建一個WCF服務來承載您的單例對象並提供訪問。 然后,您可以編寫一個小型的COM可見的客戶端,該客戶端訪問該服務以支持您的ActiveX控件。

程序集被加載到應用程序域中,每個應用程序域實例化靜態字段(單例所基於的靜態字段)。 每個進程至少有一個App Domain,因此每個進程至少有一個實例。

您的ActiveX組件是在另一個進程中實例化的,然后是.NET應用程序。 您沒有共享的內存。

要僅實例化單例一次,您需要啟動一個進程並遠程訪問它。 您可以通過使用遠程處理,DCOM,WCF或類似的方法來實現。 您需要確保兩個進程都訪問該實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM