Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[VB 6.0] Multithreading

[es] :: Visual Basic 6 :: [VB 6.0] Multithreading

[ Pregleda: 185 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stefanpn
Stefan Kostic
Paracin / Blace

Član broj: 172809
Poruke: 368
79.101.234.*

Sajt: www.stefanpn.co.nr


Profil

icon [VB 6.0] Multithreading16.07.2008. u 14:16

Radim neku aplikaciju za automatski update software-a, ali sam naišao na problem. Datoteke preuzimam sa http servera api f-jom

Code:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long


a ona zaustavi izvršavanje programa dok ne preuzme celu datoteku rešio sam da animiram korisnika jednostavnom animacijom u to vreme.

Koristio sam sledeći način:
Code:


U formi:

Private Sub Command1_Click()

    hThread = CreateThread(ByVal 0&, ByVal 0&, AddressOf AsyncThread, ByVal 0&, ByVal 0&, hThreadID)
    CloseHandle hThread

End Sub
Private Sub Form_Unload(Cancel As Integer)

    If hThread <> 0 Then TerminateThread hThread, 0

End Sub

U Modulu:

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 TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public hThread As Long, hThreadID As Long

Public Sub AsyncThread()

    Sleep 10000
    hThread = 0

End Sub


Ali ovde mi se desi da čim naiđe na "CloseHandle hThread" program se jednostavno sruši, dok ako umesto toga koristim "TerminateThread hThread, 0" onda sve radi OK u interpretatoru ali kad se kompjalira čim se napravi nova nit program se sruši.

Ima li neko rešenje koje bi podelio samnom?
16.07.2008. u 14:16 

stefanpn
Stefan Kostic
Paracin / Blace

Član broj: 172809
Poruke: 368
79.101.234.*

Sajt: www.stefanpn.co.nr


Profil

icon Re: [VB 6.0] Multithreading16.07.2008. u 15:25
Pronašao sam u čemu je problem.

Problem nastaje kada se korisni komanda sleep u threadu kada je program kompajliran.

Zna li neko neki drugi način da mi zauzeće procesora ne bude na maksimumu i f-ja malo uspori sa izvršavanjem a da to nije sleep?
16.07.2008. u 15:25 

stefanpn
Stefan Kostic
Paracin / Blace

Član broj: 172809
Poruke: 368
79.101.234.*

Sajt: www.stefanpn.co.nr


Profil

icon Re: [VB 6.0] Multithreading16.07.2008. u 17:10
Opet ja, rešio sam problem, doduše ne baš onako kako sam zamišljao ali radi...

Jednostavno mi se kod koji se trebao izvršavati u novom threadu izvršava u glavnom, a f-ju za download sam premestio u novi thread. :)

I radi super, ali ako ima zainteresovanih, lepo bi bilo da prodiskutujemo o ovoj temi.
16.07.2008. u 17:10 

[es] :: Visual Basic 6 :: [VB 6.0] Multithreading

[ Pregleda: 185 | Odgovora: 2 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.