2

我有一个 VB.NET 应用程序,其中各种对象将访问一些公共代码,并且我有一些在所有调用之间共享的计数器和值,所以我目前正在使用“共享类”(我知道类可以'本质上不能共享,但所有变量和方法都标记为“共享”)。

我关心的是这个对象的可见性——如果用户在同一个桌面上运行应用程序的两个实例,他们会使用共享类的相同“实例”吗?换句话说,应用程序的两个副本是否都会增加相同的计数器并使用相同的变量?

另外,同一台机器上的两个用户空间怎么样——如果每个用户都运行一个副本,那两个副本会干扰吗?

也许我在混淆“共享”概念,并且有更好的方法来做到这一点(我知道有些人通过模块而不是类来共享代码)。有没有更好的方法让对象(变量和方法)在整个应用程序中共享,但与其他应用程序实例分开?

更新:为了回答关于我的“首选”方式的问题,我正在编写的应用程序需要保持数据私有,即使在用户运行的不同实例之间也是如此。在这种情况下,我根本不想在多个实例之间共享任何数据,这就是为什么我担心使用共享类或模块的副作用。谢谢你的问题。

4

2 回答 2

3

您的应用程序的每个实例,无论是由单个用户还是多个用户运行,都将看到自己的共享字段副本。

此博客条目更详细地描述了静态/共享字段的范围限定为线程等项目而不是默认上下文 AppDomain 的情况。

于 2009-06-05T21:32:34.450 回答
3

共享值(如果您是 C#er,则为静态)仅适用于应用程序域。

甚至可以将多个应用程序域加载到同一个进程中,并且每个应用程序域都有自己的一组共享值。

于 2009-06-05T21:33:04.870 回答