View Full Version : [VB.NET]Multi-form + multi-thread


wedlled
31-07-2008, 15:50
Olá a todos.

Tenho um form (fomr1) que esta a correr uma thread em ciclo infinito que vai recebendo informação via web e a vai tratando.

Dado um certo input, a forma de tratamento é cria uma nova form (form2) que terá dentro dela outra thread em ciclo infinito.

O problema é que o código:
dim tmp as new form2()
tmp.show()
Não funciona. A thread no form1 continua a correr bem, mas o form2 nunca chega a carregar. Aparece e fica bloqueado sem resposta.
Se utilizar tmo.showdialog, funciona mas ai (dado o método usado) fico so com a thread na form2 a funcionar, a da form1 fica bloqueada até fechar o form2.

Alguém tem uma ideia? A única solução que arranjei foi na form1 dentro da thread principal criar uma segunda thread e esse sim chamava o tmp.showdialog. Assim sé esta thread secundária é que ficava bloqueada, mas também só era usada para chamar o form.

Como não sei se isto é o melhor a fazer, se alguém souber ajudar agradecia ;)

Armadillo
31-07-2008, 16:12
Olá a todos.

Tenho um form (fomr1) que esta a correr uma thread em ciclo infinito que vai recebendo informação via web e a vai tratando.

Dado um certo input, a forma de tratamento é cria uma nova form (form2) que terá dentro dela outra thread em ciclo infinito.

Whoow!:wow:
Loop infinito?
Acho que a resoluçao do teu problema passa por eliminares este loop.

joao.miguel
31-07-2008, 17:56
Dá uma vista de olhos no objecto ManualResetEvent.

Se puderes colocar aqui o teu código para ajudarmos era melhor.

jpaulino
31-07-2008, 19:30
Olá a todos.
A única solução que arranjei foi na form1 dentro da thread principal criar uma segunda thread e esse sim chamava o tmp.showdialog. Assim sé esta thread secundária é que ficava bloqueada, mas também só era usada para chamar o form.


Isso não é thread primária e secondária. É apenas uma thread!

jpaulino
31-07-2008, 19:32
Explica lá melhor o que queres fazer que eu não entendi nada.

Podes ver como trabalhar com thread (isto sim são várias threads) aqui:
VB.NET: Trabalhando com threads (multi-tarefas) (http://vbtuga.blogspot.com/2008/03/trabalhando-com-threads-multi-tarefas.html)

wedlled
31-07-2008, 19:37
Bem, já resolvi a questão como tinha dito no 1º post.

@jpaulino: Epá, sim é tudo threads.Tava a falar em algo do género: primária aka onde corre o meu ciclo principal; secundária aka não tão importante.

Obrigado na mesma malta, podem fechar.

jpaulino
31-07-2008, 19:54
Threads são processos que correm independentemente e o que fazes são várias instâncias de um form a correr na mesma thread, o que é muito diferente. Ou seja, se um form estiver a gravar dados o outro não consegue ir lá buscar dados em simultâneo. Primeiro acaba uma tarefa e só depois a outra é concluída.

Mas se já está a funcionar como queres isso é o que interessa.

KiKas
31-07-2008, 20:03
Threads são processos que correm independentemente e o que fazes são várias instâncias de um form a correr na mesma thread, o que é muito diferente. Ou seja, se um form estiver a gravar dados o outro não consegue ir lá buscar dados em simultâneo. Primeiro acaba uma tarefa e só depois a outra é concluída.

Mas se já está a funcionar como queres isso é o que interessa.

threads não são processos! Os processos têm 1 ou mais threads...

jpaulino
31-07-2008, 20:06
Sim a palavra foi mal utilizada! :)