VB中的多线程

来源:互联网 发布:苹果手机连接软件 编辑:程序博客网 时间:2024/05/22 06:48
 
本来上网查看了一些文章,都说VB中多线程非常不稳定,很容易造成程序崩溃。然后我也写了一个简单的例子尝试,运行后,果然崩溃,而且后来造成VB程序损坏,重装了好几次VB,VB本身并不提供多线程,如果要使用,可以通过调用API函数实现,下面的总结是实现VB多线程的一些基本方法:
l         创建线程:Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, LpthreadId As Long) As Long
通过上面API可以创建一个线程。将我们自己定义的函数的地址(Address of)传递给lpStartAddress参数,用来指定线程要做的事情。dwCreationFlags表示创建线程后该线程处于什么状态(如挂起就是常量值&H4)。该函数返回所创建线程的句柄(Handle)。
l         激活线程:Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long。如果线程挂起可以使用该函数激活。通过创建时获得的句柄来激活相应的线程。
l         线程中止(挂起):Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long。通过创建时获得的句柄来挂起相应的线程。
l         线程终止:Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long。同样通过创建时获得的句柄来关闭相应的线程。dwExitCode参数是API函数的返回值,表示当前线程的状态值。如果我们需要等进程关闭后才做其它事情,就可以用这个参数判断线程状态。
l         线程终止的退出码:Private Declare Function GetExitCodeThread Lib "kernel32" (ByVal hThread As Long, lpExitCode As Long) As Long。当执行终止线程操作后,可以循环等待,直到lpExitCode!= &H103,&H103表示线程仍存活。
原创粉丝点击