静态对象/多个应用程序域/一个进程

时间:2012-06-01 18:16:43

标签: c# winforms multithreading process appdomain

好的就是这个问题,我有一个winform应用程序,它严重依赖于静态变量,它是一个单例应用程序(一次只有一个进程实例)。

我现在需要创建一个包装应用程序,它将创建这些winform应用程序中的6个,并在它们的主窗口之间切换。这样做的原因是这些应用程序有很多静态引用,必须根据它们所连接的数据库进行更新。我们的用户现在需要连接到多个数据库并重新设计代码以摆脱静态问题不是一种选择。

所以我的问题是,我知道我可以在一个进程中创建新的应用程序域,但是每个应用程序域都会获得一组新的静态引用吗?或者我实际上必须有单独的流程?如果是这样,我怎么能建立一个新的应用程序,它将创建旧应用程序的6个实例并将数据传递给它们中的每一个(如隐藏/显示,加载此对象,查询此数据库等...)对于简单的事情,因为这最终将成为一个扔掉的项目。

谢谢!

1 个答案:

答案 0 :(得分:1)

每个app域都有自己的一组加载程序集(除了domain-neutral assemblies,它们在域之间共享)和类型。 app域中的每个类型都有自己的静态变量实例(在域中性程序集的情况下CLR以特殊方式提供)。