可以在两个不同的项目中共享列表容器

时间:2013-03-07 17:01:34

标签: c# visual-studio-2010

我目前正面临一个问题,我似乎无法解释它。在我的C#解决方案中,我有三个项目A,B和C.A和B都参考项目C,它包含一个静态List容器。现在,当项目A添加到容器时,令人惊讶的是项目B无法在容器中找到内容。有什么建议为什么会这样?

1 个答案:

答案 0 :(得分:2)

static个项目仅在同一个AppDomain 中共享。如果A和B在不同的空间(两个不同的网站,控制台应用程序,WinForms等)中运行,它们将不会共享相同的内存空间。

如果您需要在两个不同的流程之间共享数据,则需要采用不同的方式来实现这一目标。一些选项是:

  • 使用数据库
  • 使用文件
  • 创建托管共享数据的网络服务
  • 创建承载数据的Windows服务

每个人都有开发时间/复杂性/可维护性等的优缺点。

如果它们是两个不同的网站,您可以将它们设置为使用相同的AppPool,它们可以共享静态变量(虽然我从未尝试过)。

编辑:基于进一步的研究,即使两个网络应用共享一个AppPool,它们也将拥有不同的AppDomain。 (AppPool可以托管多个独立的AppDomain。)