|
Postada em 26/05/2006 21:09 hs
O conceito de thread não é muito bem trabalhado em vb5/6. é possivel fazé-lo passando um adressof no método que vc deseje q rode de forma assincrona. Exemplo simples: --------------------------------------------------- Em um form: Private Sub cmdTesteThread_Click() hTarefa = CreateThread(ByVal 0& , ByVal 0& , AddressOf gSubTarefa, ByVal 0&, ByVal 0&, hTarefaCod) CloseHandle hTarefa End Sub Private Sub Form_Unload(Cancel As Integer) 'If the thread is still running, close it If hThread <> 0 Then TerminateThread hThread, 0 End Sub
Em um módulo:
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 hTarefa As Long, hTarefaCod As Long Public Sub gSubTarefa() ' Rode alguma coisa aqui um loop ou qualquer outra coisa q possua um doevents 'pelo menos para evitar um crash hThread = 0 End Sub
-------------------------------------------------------------------------
Bem vou sugerir um artigo e um exemplo sobre multi-threading em vb6. São eles:
1-Exemplo: http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=14479&lngWId=1
2-Artigo(Exemplo incluso): http://www.freevbcode.com/ShowCode.Asp?ID=4029
Obs.: Multi tarefa é muito propenso a bugs...não recomendo pelo menos naum em vb6 sem intensos testes com o intuito de avaliar o impacto que os benefícios trariam em detrimento da execução do software.
Espero ter ajudado... Abraços, Sidnei
|
|
|