none
Como realizar uma tarefa Multithreading com Subs que utlizam controles da thread principal? RRS feed

  • Discussão Geral

  • Olá eu tenho uma série de subs que são lançadas pleo forms.timer a cada 10 segundos para carregar a página pegar seu código fonta, botar ele num arquivo de texto e então por uma série de métodos achar informações dentro do source code da página e colcoar ela em uma label, dando a ela depois uma cor verde assimq eu o resultado for encontrado, como o timer é a cada 10 segundos, ele é atualizado a cada 10 segundsos, porém apra essa tarefa leva mais de 7 segundos cada vez que atualiza, e nesse tempo o meu aplicativo trava por completo. e eu não posso fazer nada nele.

    O que eu queria é que ele criasse uma nova tarefa e que nessa tarefa ela realizasse todas as subs, sendo que cada uma sub pega uma informaçãoq eu eu quero assim como ela tem que ser executada fora da thread principal, para não travar o meu aplicativo, já que ele realmente não poder fica parado devido a sua função.

    Alguém poderia me dar um código que resumisse isso?

    Seria algo do tipo:

    1) inciar uma tarefa nova que iniciasse cada sub(lembrando que elas tem que ser vinculadas à thread principal pois elas mechem nelas, tais como as label1, label2 e assim por diante), e cada sub fosse uam tarefa fora da thread principal para não travar o aplciativo, e que essa tarefa toda repetisse a cada 10 segundos?

    Eu ja estou tentando isso a 2 dias mas não estou conseguindo.

    Espero por uma resposta.

    • Tipo Alterado Marcos SJ segunda-feira, 11 de abril de 2016 13:58 How to / Solicitação de código
    sábado, 9 de abril de 2016 22:47

Todas as Respostas

  • Boa noite, Se estiver usando uma timer, para fazer o uso das thereads pode ser isso, recomendo fazer manualmente o tempo, pois usando uma time ela da uma pausa de tempo, que ira da leves travadas na forme.
    domingo, 10 de abril de 2016 00:08
  • Olá eu sei que é isso, mas estou pedindo para me auxiliar a fazer isso.

    Tem como me dar um exemplo de código apra isso?

    domingo, 10 de abril de 2016 15:39
  • Execute esse codigo, em um novo theading fora do principal. 

    Imports System.Threading
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim t As Thread = New Thread(AddressOf funcion)
            t.IsBackground = False
            t.Start()
        End Sub
        Private Function funcion()
    
        End Function
    End Class
    

    domingo, 10 de abril de 2016 16:44
  • Ou use invoke pra manter o forme ativo.

    http://stackoverflow.com/questions/17717709/vb-net-invoke-method

    domingo, 10 de abril de 2016 16:53