I know it's marked as resolved, but just in case someone is interested in the multithreading option - a little demo program.
As to which is faster, MultiThreading or DoEvents, I'll leave others to argue. The obvious advantage of MultiThreading comes in when you have to perform other tasks within the same app. Make an executable of the code below and run it. Click on "Start MultiThread" and move the form around, scroll the textbox etc. The "AddTextMultiThread" function continues without even a pause. Click on "Stop MultiThread". Try the same with "Start/Stop DoEvents". Spot the difference.
'Original code at:- http://www.free2code.net/plugins/art...read.php?id=94
VB Code:
Option Explicit 'Form level code. 'MultiThread versus DoEvents. 'Add a textbox and 4 command buttons to a form. Private 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 Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, _ ByVal dwExitCode As Long) As Long Private Sub Command1_Click() id = CreateThread(ByVal 0&, ByVal 0&, AddressOf AddTextMultiThread, ByVal 0&, 0, id) End Sub Private Sub Command2_Click() Call TerminateThread(id, ByVal 0&) End Sub Private Sub Command3_Click() StopDo = True AddTextDoEvents End Sub Private Sub Command4_Click() StopDo = False End Sub Private Sub Form_Load() Me.Height = 4545 Me.Width = 8925 Text1.Move 45, 45, 8700, 3525 Command1.Move 45, 3690, 1635, 375 Command1.Caption = "Start MultiThread" Command2.Move 1845, 3690, 1635, 375 Command2.Caption = "Stop MultiThread" Command3.Move 5310, 3690, 1635, 375 Command3.Caption = "Start DoEvents" Command4.Move 7110, 3690, 1635, 375 Command4.Caption = "Stop DoEvents" End SubVB Code:
'Module level code. Option Explicit Public id As Long Public StopDo As Boolean Public Function AddTextMultiThread() Do Form1.Text1.SelText = "Adding to Text1 - " Loop End Function Public Function AddTextDoEvents() StopDo = True Do While StopDo = True Form1.Text1.SelText = "Adding to Text1 - " DoEvents Loop End Function




Reply With Quote