多实例化广泛使用全局变量的项目

时间:2012-07-19 23:28:30

标签: vb.net global-variables

我们在Visual Basic .NET中开发了一个相当强大的程序,我们创建了一个基本上将整个程序表示为单个对象的API。这很好用,我们已经使用了很多年 - 但现在我们真的可以使用多个实例来实现一个项目。

问题在于代码库对Startup模块中的全局变量(gSvcMgr)有广泛的引用。如何使此对象的多个实例引用另一个变量?我可以使用命名空间吗?或Shadows关键字?

如果我不清楚,或者细节可能有帮助,我可以进一步描述结构。

虽然重构全局变量并不是不可能的,但它是唯一的选择,我们有一个非常大的代码库,只有少数开发人员。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Application Domain在单独的AppDomain.CreateInstanceAndUnWrap中创建应用程序对象的每个实例。这将创建选项的每个实例,它是一个不同的域,其中将拥有自己的共享全局数据副本,并且不会相互接触。

然而,使用应用域会带来性能成本 - 应用域之间的所有方法调用都将为marshaled(读取已复制)。您还必须从MashalByRefObject派生您的应用程序对象。

有关使用应用域解决类似问题的示例,请参阅此blog post