THREADS NO VB6???

JOERBETH 22/09/2009 17:04:24
#323452
Pessoal, boa tarde!

Seguinte, tenho um sistema de marcação de ponto digital, onde trabalho com um leitor, bom, o pessoal de onde o cliente comprou o leitor, falaram que, tem como colocar dois leitores em um unico computador utilizando Threads no VB 6.0???, eu ainda não sei como fazer isso, pois, tem que ficar as duas telas de batida de ponto da tela???.

Falows

Joerbeth

EMERSONTADEU 22/09/2009 23:55:46
#323466
Sim 2 instancias da mesma DLL ou executável pois o VB6 não é multi thread.

é também por isto que vc precisa abrir 1 IDE para cada componente COM que pretenda depurar.

E para finalizar, é por causa da confusão de fazer isto que surgiu o dotnet.

Faça em dotnet, a tecnologia COM tem seus dias COMtados .... ficou legal não ?

Abaixo link mto antigo em que falo um pouco mais desta tecnologia ...

http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=Abrir&varID=186650&varWorld=
EMERSONTADEU 23/09/2009 00:08:32
#323467
Sugiro fortemente que utilize o dotnet para este tipo de tarefa pois não se sabe o que futuros sistemas operacionais ou sp[ô]s irão complicar nossa vida.

Abaixo exemplo da coleção da própria MS (101VBSamples) que mostra exclusivamente multi-operações gerenciadas pelo VBnet.

Sim, é código pronto de presente pro C.

ASHKATCHUP 23/09/2009 08:08:36
#323474
Resposta escolhida
é possível fazer Thread? é.
Porém, baseia-se em gambiarra....
Acho que esse site pode lhe ajudar:


http://imasters.uol.com.br/artigo/6275/visual_basic/threads_em_vb6/
EXPERTVB6 14/01/2012 10:10:13
#393229
LOUCO NUMERO 1 = EMERSONTADEU:
Sim 2 instancias da mesma DLL ou executável pois o VB6 não é multi thread.

LOUCO NUMERO 2 = ASHKATCHUP:
é possível fazer Thread? é.
Porém, baseia-se em gambiarra....
Acho que esse site pode lhe ajudar:

Desculpe informar aos senhores mas para a tristeza daqueles que subestiam o Visual Basic 6, ele é simplesmente uma linguagem Multhreading e é rapido tanto quanto a linguagem C++. Parece piada ne? kkkkk

Observem em Project -> Properties, lá vai ter as opções Thread per Object e Thread Poll na seção Threading Model.
Isso é o suficiente? agora se viram e vá pesquisar, dei a faca agora só falta o queijo kkkkkkkkkkkk

tipo agora botei pra crer que os brasileiros são fracos em programação, apesar que sou brasileiro kkkkkkkk
LLAIA 14/01/2012 16:32:38
#393238
Ah muleke bom!!

Nem tentei pois estou sem VB6 em casa :P, mas vou tentardepois. :)
EXPERTVB6 16/01/2012 18:11:14
#393372
então LLAIA, pra usar Threads no VB6 vc tem que abrir um projeto ActiveX EXE, ou alterar seu atual projeto para Activex EXE. O Standard EXE é só pra brincar de programação.

aí vc deverá obrigatoriamente ter no mínimo 1 classe Multiuse em seu projeto e um módulo com Sub Main chamando seu Form principal.

depois lá em Project Properties vc escolhe a opção Thread per Object, isto fará com que o VB crie uma thread pra cada Classe que vc invocar com o comando Createobject

por exemplo:

Dim cThread as clsClasse
Set cThread = Createobject([Ô]Project1.clsClasse[Ô])

cThread.EnviarComando([Ô]Olá[Ô])

do
if cThread.Estado = [Ô]Comando recebido[Ô] then msgbox [Ô]OK[Ô]: exit do
loop

ele irá carregar a sua classe numa Thread separada mas a nova thread automaticamente irá executar a sub main novamente abrindo outro Form principal
vc deverá checar na sub main se a janela já está aberta ou não, se tiver então não Carregue o form principal. O ActiveX no VB por padrão executa a Sub Main quando a Thread é criada na memória.

Mas lembre-se que a sub main da thread carregada não é a mesma da Thread do seu EXE em execução pq a Thread é uma cópia do seu EXE na memória e ela terá comportamentos distintos e tais comportamentos serão manipuladas pela classe entre seu EXE e a thread como no exemplo acima.

Tenho toda a solução de threads em VB6, caso queria entender melhor como usá-la.
abraços!
Tópico encerrado , respostas não são mais permitidas