1

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

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

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

谢谢!

4

1 回答 1

1

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

于 2012-06-01T18:19:16.703 回答