2013-03-07 93 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

相关问题