Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET中各种对象(共享类、模块等)的可见范围有多广_Vb.net_Class_Module_Shared_Multiple Instances - Fatal编程技术网

VB.NET中各种对象(共享类、模块等)的可见范围有多广

VB.NET中各种对象(共享类、模块等)的可见范围有多广,vb.net,class,module,shared,multiple-instances,Vb.net,Class,Module,Shared,Multiple Instances,我有一个VB.NET应用程序,其中各种对象将访问一些公共代码,我有一些计数器和值在所有调用之间共享,因此我目前使用的是“共享类”(我知道类本身不能共享,但所有变量和方法都标记为“共享”) 我关心的是这个对象的可见性——如果用户在同一个桌面上运行应用程序的两个实例,他们会使用共享类的同一个“实例”吗?换句话说,应用程序的两个副本是否都会增加相同的计数器并使用相同的变量 另外,同一台机器上的两个用户空间呢?如果每个用户运行一个副本,这两个副本会相互干扰吗 也许我在贬低“共享”的概念,有一种更好的方法

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

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

另外,同一台机器上的两个用户空间呢?如果每个用户运行一个副本,这两个副本会相互干扰吗

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

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

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

更详细地介绍了静态/共享字段的作用域是线程而不是默认上下文(AppDomain)等项的情况。

共享值(如果您是C#er,则为静态)仅在应用程序域中常见

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

您会思考是否有“更好的方法”来实现这一点,而不会实际说明您喜欢的方案中需要什么。是否希望能够为一个用户跨多个实例共享变量,但不希望为两个不同的用户共享变量?