Тема: VBS: [псевдо]мультипоточность используя onreadystatechange ?
Приветствую господа. Вроде уже эту тему вертели как могли, так что если я брежу, удалим это к чёрту.
Ковыряясь с onreadystatechage задумался о запуске кода параллельно.
Скажите, кто-нибудь так экспериментировал ? При этом ведь деления на потоки не происходит и обратные вызовы WScript всё равно ставит в очередь ?
Option Explicit
Dim s
Dim n
RunThread GetRef("Test1")
RunThread GetRef("Test2")
RunThread GetRef("Test3")
MsgBox "Процедуры запущены !"
Do While n > 0
WScript.Sleep 100
Loop
MsgBox s
Sub RunThread(oProc)
Dim cThread
Set cThread = New cThread
cThread.Run oProc
n = n + 1
End Sub
Sub Test1()
WScript.Sleep 1000
s = s & "Test1" & vbCrlf
n = n - 1
End Sub
Sub Test2()
WScript.Sleep 100
s = s & "Test2" & vbCrlf
n = n - 1
End Sub
Sub Test3()
s = s & "Test3" & vbCrlf
n = n - 1
End Sub
Class cThread
Private oHR
Private oCallback
Private Sub Class_Initialize()
Set oHR = CreateObject("MSXML2.XMLHTTP")
End Sub
Sub Run(oProc)
Set oCallback = oProc
oHR.onreadystatechange = Me
oHR.Open "HEAD", "http://www.com", True
oHR.send
End Sub
Public Default Sub oncallback()
if oHR.readyState = 2 Then
oCallback
End if
End Sub
End Class