请问这里的大虾,怎么用vb写多线程。

bgu 2003-01-11 02:30:06
我正写着一个程序,但在编写时要用到同时调入多个函数,而却又不知道怎么可以同时调用,只会一个一个的调用,所以在写出来的程序里运行很慢。
请问谁会用多线程的运行!
...全文
9 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
antshome 2003-01-11
to programart_life(理论派)

你的代码有些问题,当线程函数执行完后会出现内存不可写错误

使用如下方法创建线程
Dim hThread As Long, hThreadID As Long

Dim lNull as long
lNull=0
hThread = CreateThread(lNull, lNull, AddressOf MyThread, lNull, lNull, hThreadID)
回复
antshome 2003-01-11
你可以将线程放在一个ActiveX Dll里面,注意使用P代码来编译
最好装sp5再编译,据微软说p代码和本机代码编译结果有些不同,是VB的一个bug

线程函数里不可以使用VB的内置函数,否则100%出错
回复
ccbl 2003-01-11
不安全
回复
树莓派 2003-01-11
你为什么不用VB.net,他对进程很支持!
回复
bgu 2003-01-11
原来是这样。
谢谢

那用这个不是很危险??
回复
programart_life 2003-01-11
哦!还没说完,CloseHandle也是API函数,用来关闭一个句柄
上面是关闭一个线程句柄
回复
programart_life 2003-01-11
CreateThread是一API函数,创建一个线程序。
非安全线程,意思是,VB不提供线程安全机制,所有的地方你得自己控制,弄不好就会Down
回复
bgu 2003-01-11
"vb不是线程安全的"
这是什么意思??

是说线程不安全??那不会down机吧???
回复
Net8 2003-01-11
vb不是线程安全的。注意。
回复
bgu 2003-01-11
嗯,谢谢大哥。

不过这句不怎么明白:
hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf MyThread, ByVal 0&, ByVal 0&, hThreadID)
CloseHandle hThread

这句到底有什么作用?
回复
programart_life 2003-01-11
'在窗体上添加一个CommandButton

Private Sub Command1_Click()
Dim hThread As Long, hThreadID As Long
hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf MyThread, ByVal 0&, ByVal 0&, hThreadID)
CloseHandle hThread
End Sub

’在模块中做如下声明
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Sub MyThread()
'在这里放入你要作的事情
End Sub

上面是一个非常简单的线程,你稍做修改即可完成你的事情。
但是一定要用线程才能完成的你事情吗?一般的就多用几个Timer控件也可以实现啊
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告