VB的创建的多线程只能创建模块内的public型的过程
但当这个过程中的语句所涉及到的变量与外部过程发生冲突时,就会发生"...内存只能为读"的错误.
例:
'*************
'在一个模块中
private declare function Sleep(.....(省略)) '一个暂停的API函数
public lngTestPara as long
public function newThread()
Part1:
lngTestPara=1
sleep 50
goto Part1
end function
'**************'**************
'在一个窗体中
private sub Command1_click()
CreateThread 0,0,Addressof(newThread) '建立这个新线程 do
lngTestPara=2 '对这个模块的公用变量不停赋值
loop
end sub
'***************运行后,不久,内存不可写的错误就发生了
(上述例子在win98下千万不要做测试,容易发生永久死机!!!!!)我只是想向这个线程内传递参数,单这种方法不是很可靠,不知哪位大侠有解决的办法,或者有其它向线程内传递参数的方法告之,谢!
但当这个过程中的语句所涉及到的变量与外部过程发生冲突时,就会发生"...内存只能为读"的错误.
例:
'*************
'在一个模块中
private declare function Sleep(.....(省略)) '一个暂停的API函数
public lngTestPara as long
public function newThread()
Part1:
lngTestPara=1
sleep 50
goto Part1
end function
'**************'**************
'在一个窗体中
private sub Command1_click()
CreateThread 0,0,Addressof(newThread) '建立这个新线程 do
lngTestPara=2 '对这个模块的公用变量不停赋值
loop
end sub
'***************运行后,不久,内存不可写的错误就发生了
(上述例子在win98下千万不要做测试,容易发生永久死机!!!!!)我只是想向这个线程内传递参数,单这种方法不是很可靠,不知哪位大侠有解决的办法,或者有其它向线程内传递参数的方法告之,谢!
解决方案 »
- 新人求助:如何把10进制整数转换为16进制4字节数组?
- 请问ms script control的函数在winxp下为何比win98、win2000、win2003下运行慢的多?
- 求助:我用VB运行时候正常,生成的EXE文件却出现Couldn't find installable ISAM的错误,为什么?
- 请教:
- 如何用代码实现ODBC的配置
- 菜鸟问题,并送分
- 将picturebox中的图像保存为jpg格式
- Access2000中如何将多个查询合并成一张表?13点之前结贴!
- 如何在mshflexgrid中实现添加单行,添加多行,删除单行,删除多行?感谢大家
- 关于VB中recordset删除记录的问题
- dataGrid1问题????
- VBA中怎么写ftp代码?
http://www.china-askpro.com/download/daniel.zip
对他的操作,涉及到线程同步的问题,你把他放到 临界区 里 试试.
Public Declare Sub EnterCriticalSection Lib "kernel32" (lpCriticalSection As CRITICAL_SECTION) '进入临界区
Public Declare Sub LeaveCriticalSection Lib "kernel32" (lpCriticalSection As CRITICAL_SECTION) '离开临界区
'这个是用于多线程访问临界资源同步Api的数据结构
Public Type CRITICAL_SECTION
dummy As Long
End Type
Public sect As CRITICAL_SECTIONpublic function newThread()
.....
Call EnterCriticalSection(sect)
' 上下表示该处为临界区,如果要对工程全局变量做操作,最好在该区域内
' 否则线程同步过程中,非常容易让程序崩溃
lngTestPara=1
Call LeaveCriticalSection(sect)
end funciton还有vb的一些控件并非线程安全的,所以在创建的线程内使用也非常危险
1.在CRITICAL_SECTION结构中,dummy这个成员如何使用?
2.我已试过几个控件,它们的确不是安全线程的,您还知道哪些VB控件是安全线程的?谢谢.