首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

创造多个同一组件时,数据冲突

2013-01-05 
创建多个同一组件时,数据冲突。假设有一个DLL,里面有一个模块,模块里有一个PUBLIC变量。一个工程引用这个DLL

创建多个同一组件时,数据冲突。
假设有一个DLL,里面有一个模块,模块里有一个PUBLIC变量。

一个工程引用这个DLL,创建DLL1,DLL2对象,分别操作时,发现他们共用这个PUBLIC变量。

Why? How?
[解决办法]
测试了一下,不存在lz说的这个问题,最好帖出调用代码看看.

下面是我测试的代码
MyClass.cls代码
Public sStr As String

程序测试代码
Private Sub Command1_Click()
    '测试dll里的公共变量 sStr
    Dim MyCls1 As New MyClass, MyCls2 As New MyClass
    Debug.Print MyCls1.sStr
    MyCls1.sStr = "MyCls1"
    Debug.Print MyCls2.sStr
    MyCls2.sStr = "MyCls2"
    Debug.Print MyCls1.sStr
    Debug.Print MyCls2.sStr
End Sub

输出


MyCls1
MyCls2

[解决办法]

引用:
这问题早就遇到过,不知道大家的测试代码
楼主说的是dll标准模块中的公共变量,这个变量理论上在工程内是始终存活的,创建的只是dll中的一个对象(类),如果是这个类中的public,则这个变量会随类的撤消而消失...但dll标准模块中的公共变量它是一个全局副本,它和dll中的类无关,除非整个工程对这个dll的引用撤消,它才会撒消...

MSDN:要避免类的代码依赖于全局变量,也就是标准模块……
学习的深刻啊。看样子只有将Public变量放到class模块中才行了,放标准模块的话我测试了下确实是共享数据的。
[解决办法]
使用COM组件进行数据共享与通讯,我这里有个从老魏那里拿到的代码:

http://www.m5home.com/bbs/thread-4073-1-1.html

热点排行