如何安全的使用多线程???
Diboy 2003-04-09 11:18:44 在 vb6 中如何安全的使用多线程序
我找一个多线程序的例子,但实在是太不稳定了,跑着跑着就挂了
不知哪位我比较好的办法,附上我的代码
clsThreads.cls
------------------
Option Explicit
Private Declare Function CreateThread Lib "kernel32" (ByVal pThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long
Private Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long
Public ThreadStatus As Boolean
Private Thread As Long
Public Property Let Enabled(ByVal vNewValue As Boolean)
If vNewValue = True And Me.ThreadStatus = False Then
ResumeThread Thread
Me.ThreadStatus = True
ElseIf Me.ThreadStatus = True Then
SuspendThread Thread
Me.ThreadStatus = False
End If
End Property
Public Sub Initialize(lpfnBasFunc As Long)
Dim dwStackSize As Long
Dim dwCreationFlags As Long
Dim lpThreadId As Long
Dim lpParameter As Long
Dim myNull As Long
myNull = 0& 'create a null pointer
dwStackSize = 0 '0±íʾÓÃexe stack size
dwCreationFlags = 4 'ÓÃ4±íʾ³õʼ»¯ºóÏȲ»¼¤»î,ÈñðÈËÀ´¼¤»î.
Thread = CreateThread(myNull, dwStackSize, lpfnBasFunc, myNull, dwCreationFlags, lpThreadId)
If Thread = myNull Then
MsgBox "create thread failed"
End If
End Sub
---------
module
Option Explicit
Public Sub Test1()
Dim i As Long
For i = 0 To 9999
Debug.Print ("SSSSSSSSSSSSS")
Next
End Sub
Public Sub Test2()
Dim i As Long
For i = 0 To 9999
Debug.Print ("*************")
Next
End Sub
---
form
---
Dim myThread1 As New ClsThreads
Dim myThread2 As New ClsThreads
Private Sub Command1_Click()
'make new thread object
'Dim myThread As New ClsThreads
'´´½¨ÏØ³Ç Foo
myThread1.Initialize AddressOf Test1
'¼¤»îÏسÇ
myThread1.Enabled = True
End Sub
Private Sub Command2_Click()
'´´½¨ÏØ³Ç Foo
myThread2.Initialize AddressOf Test2
'¼¤»îÏسÇ
myThread2.Enabled = True
End Sub
Private Sub Command3_Click()
myThread1.Enabled = False
End Sub
Private Sub Command4_Click()
myThread2.Enabled = False
End Sub