2013-03-07 89 views
0

我目前面臨一個問題,我似乎無法解釋它。在我的C#解決方案中,我有三個項目A,B和C.A和B都引用包含靜態List容器的項目C.現在,當項目A添加到容器時,令人驚訝的是項目B無法找到容器中的內容。任何建議爲什麼會發生這種情況在兩個不同的項目之間共享列表容器的可能性

+0

請在這裏發佈您的代碼 – 2013-03-07 17:03:33

+0

目前尚不清楚我們正在討論的流程*。 A和B是否將應用程序分開,作爲單獨的進程運行?它不像靜態變量被全局共享* - 它們只在一個AppDomain中,在一個進程中。 – 2013-03-07 17:03:43

+0

他們是否分開可執行文件?即使它們在解決方案中共享通用代碼,它們在運行時也會處於不同的進程中。 – 2013-03-07 17:04:57

回答

2

static項目只在同一AppDomain內共享。如果A和B運行在不同的空間(兩個不同的網站,控制檯應用程序,WinForms等),它們將不會共享相同的內存空間。

如果你需要在兩個不同的進程之間共享數據,你需要想出一個不同的方法來做到這一點。一些選項有:

  • 使用數據庫
  • 使用文件
  • 創建一個Web服務,主機共享數據
  • 創建承載數據的窗口服務

每對開發時間/複雜性/可維護性等有利/弊。

如果他們是你可以將它們設置爲使用相同的應用程序池兩個不同的網站和他們 可能份額靜態變量(雖然我還沒有嘗試過它)。

編輯:基於進一步的研究兩個網絡應用程序將有不同的AppDomains,即使他們共享一個AppPool。 (一個AppPool可以託管多個獨立的AppDomain)。

+1

更多選項:命名管道,.net遠程處理,消息隊列 – 2013-03-07 17:15:58

+0

是的,有一百種方法來爲那隻貓皮膚。 – 2013-03-07 17:22:48

相關問題