SOCORRO!! PORQUE NAO FUNCIONA???

MLALEX 04/12/2012 17:37:15
#415440
O código abaixo deveria acontecer simultaneamente quando acionados juntos, mas funciona. Quando você aciona o TestaVariavel2 o TestaVariavel1 para. Preciso usar com index, então, como fazer isso direito para que as duas funcionem juntas?

Para testar, coloquem dois botões.
No botão 1 o comando:
TestaVariável1(1)

No botão 2, o comando:
TestaVariável2(2)


Private Sub TestaVariavel1(ByVal index As Integer)
Dim idx As Double
Do Until idx = 1000000
Text1(index).Text = idx
DoEvents
idx = idx + 1
Loop
End Sub


Private Sub TestaVariavel2(ByVal index As Integer)
Dim idx As Double
Do Until idx = 1000000
Text1(index).Text = idx
DoEvents
idx = idx + 1
Loop

End Sub



Porque isso não funciona????
KERPLUNK 04/12/2012 17:40:42
#415441
Deixa ver se entendi, você está querendo usar multi-tarefas com VB6?

Amigo, não funciona porque dentro de cada um dos loops, tem o comando [Ô]DoEvents[Ô], isso significa que todo e qualquer evento será ouvido e executado. Logo, se está no TestaVariavel1 e clica no botão, ele vai parar o loop e executar o que quer que esteja no código do botão.
O que exatamente você quer fazer?
MLALEX 04/12/2012 17:48:38
#415442
Puxa Kerplunk! Acho que o temo certo é reamente mult-tarefas. Acho que você tem razão com relação ao [Ô]DoEvents[Ô]. Preciso que os dois rodem simultaneamente sem um interromper o outro. Se eu tirar o DoEvents talvez dê certo, mas fico sem ver os resultados simultaneamente. Como fazer isso então???
OCELOT 04/12/2012 17:51:15
#415444
Resposta escolhida
Não tem como executar dois loop simultaneamente, a única forma seria com o uso de Threads mas o VB6 não funciona bem com Threads.

Você tem que entender que mesmo com o DoEvents o VB roda tudo em um único Thread, com isso você sempre vai ter apenas uma rotina executando de cada vez, o DoEvents pode fazer parecer que permite que outras coisas rodem junto, mas não é o caso, na verdade ele só permite que o programa processe a fila de mensagens dele, e isso é de forma síncrona, então enquanto ele não termina isso a chamada do DoEvents não retorna e esse parte do código fica parado.
MLALEX 04/12/2012 18:02:28
#415445
Caramba!!! To encalacrado!! Vou ter que repensar meu projeto. JESUS ACENDA A LUZ. Valeu gente. Muito obrigado aos dois.
Tópico encerrado , respostas não são mais permitidas