簡體   English   中英

如何知道兩個項目是否在同一appdomain中

[英]how to know if 2 projects are at the same appdomain

我在相同的解決方案中創建了5個項目,假設它們都具有相同的應用程序域,因此它們都可以共享靜態變量(因為每個appdomain都是靜態的),那么如何確保它們都位於同一appdomain上? 如果不是,那么如何使它們全部運行在同一個應用程序域中。 還有我怎么給他們相同的命名空間,它們都仍然有自己的命名空間?

例如project1命名空間是Bigproject.project1project2命名空間是Bigproject.project2 ,依此類推?

(我在嘗試使用winf應用程序時遇到麻煩)

這不是一個帶有庫的項目,而是2個帶有1個win窗體和2個庫的控制台應用程序,問題是其中一個控制台窗體從該庫獲取的實例與win窗體的實例不同,在此實例中,我指的是靜態變量的實例,因此,我懷疑即時通訊不在同一appdomain上運行

AppDomain特定於流程。 只需在同一過程中運行它們即可。

一個進程可以具有多個AppDomain。 如果要創建AppDomain或在不同的進程中運行這些程序集,則將手動管理它們之間的通信。

我在相同的解決方案中創建了5個項目,假設它們都具有相同的應用程序域,因此它們都可以共享靜態變量

如果您的解決方案具有引用其他庫的單個可執行文件,那么我認為這是一個合理的假設。

我如何確保它們都在同一個應用程序域中?

應用程序域將由引用它們的程序集確定。 您不能“確保”兩個庫將被加載到同一個應用程序域中-兩個單獨的應用程序引用單獨的應用程序域中的庫是完全合理的。

就是說,如果庫由相同的可執行文件引用,則它們位於相同的應用程序域中(您必須將程序集顯式加載到單獨的應用程序域中)

這不是一個帶庫的項目,而是2個控制台應用程序和1個獲勝表格和2個庫

然后,您需要使用一些進程間通信(Web服務,WCF)或中央存儲庫(數據庫)。

項目不是AppDomains的同義詞,除非您專門創建一個新的應用程序域,否則您在應用程序中引用的所有對象很可能都通過它們的入口點機制位於同一應用程序域中。 該機制可以是.exe或ASP.NET等下的Web請求。

常見的例外情況是:

  • 通過WCF或.NET Remoting(RPC,IPC)進行通信時
  • 通過任何SOA傳輸(例如HTTP等)進行通信...

至於從一個應用程序域到另一個應用程序域通信的症狀,您會看到調用堆棧中包含代理,請參閱MarshalByRefObjectContextBoundObject

暫無
暫無

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

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