0

我们有一个用 Visual Basic .NET 开发的相当健壮的程序,并且我们创建了一个 API,它基本上将整个程序表示为单个对象。这工作得很好,我们已经使用它多年了——但现在出现了一个项目,我们真的可以使用它的多个实例。

问题是代码库对启动模块中的全局变量 (gSvcMgr) 有广泛的引用。如何使该对象的多个实例引用不同的变量?我可以使用命名空间吗?还是阴影关键字?

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

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

谢谢!

4

1 回答 1

1

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

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

有关使用应用程序域解决与您的问题类似的问题的示例,请参阅此博客文章。

于 2012-07-20T01:58:25.693 回答