vb.net - VB.NET 中各种对象(共享类、模块等)的可见程度如何

标签 vb.net class module shared multiple-instances

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

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

此外,同一台计算机上的两个用户空间怎么样 - 如果每个用户运行一个副本,这两个副本会相互干扰吗?

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

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

最佳答案

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

This blog entry更详细地描述了静态/共享字段的范围仅限于线程等项目而不是默认上下文(AppDomain)的情况。

关于vb.net - VB.NET 中各种对象(共享类、模块等)的可见程度如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958242/

相关文章:

asp.net - 验证器摘要不会动态更新

asp.net - Gridview 为空白时显示页眉/页脚 VB.net

javascript - 如何从 core-js 中挑选模块

c# - 用于付费订阅的安全网络模块

java - 类及其实例是什么意思? (java)

python - 导入 __module__ python : why the underscores?

vb.net - 冒泡排序与插入排序 - 尝试编写一个程序来确定哪个更有效

asp.net - VB.Net Web 方法给出 HTTP401 未授权错误

actionscript-3 - flash as3 - 在不同的 swfs 中不能有同名的类吗?

c++ - 类声明混淆 - 右大括号和分号之间的名称