我有一个 VB.NET 应用程序,其中各种对象将访问一些通用代码,并且我有一些在所有调用之间共享的计数器和值,所以我当前正在使用“共享类”(我知道类本身不能共享,但所有变量和方法都标记为“共享”)。
我关心的是这个对象的可见性 - 如果用户在同一个桌面上运行应用程序的两个实例,他们会使用共享类的相同“实例”吗?换句话说,应用程序的两个副本都会增加相同的计数器并使用相同的变量吗?
此外,同一台计算机上的两个用户空间怎么样 - 如果每个用户运行一个副本,这两个副本会相互干扰吗?
也许我正在破坏“共享”概念,并且有更好的方法来做到这一点(我知道有些人通过模块而不是类来共享代码)。是否有更好的方法让对象(变量和方法)在整个应用程序中共享,但与其他应用程序实例分开?
更新: 为了回答有关我的“首选”方式的问题,我正在编写的应用程序需要保持数据私有(private),即使在用户运行的不同实例之间也是如此。在这种情况下,我根本不想在多个实例之间共享任何数据,这就是为什么我担心使用共享类或模块的副作用。感谢您的提问。
最佳答案
应用程序的每个实例,无论是由单个用户还是多个用户运行,都将看到自己的共享字段副本。
This blog entry更详细地描述了静态/共享字段的范围仅限于线程等项目而不是默认上下文(AppDomain)的情况。
关于vb.net - VB.NET 中各种对象(共享类、模块等)的可见程度如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958242/