Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia caros Colegas!
Estou Tentando utilizar uma Thread para executar uma função que leva um certo tempo para ser executada, pois ela busca a porta e velocidade de um modem, pooorem essa thread esta travando minha tela ao ser executada, alguem pode me dar uma força?
Segue Codigo do Form que esta travando Delegate Sub UpdateDelegate()
Private Sub frmChamados_Load(sender As Object, e As EventArgs) Handles MyBase.Load
carregaTela()
estadoTela(1)
Me.Text = "Chamados - Usuário: " & UsuarioLogado.Usuario
thrCarregaModem = New Thread(AddressOf trabalhoThr)
thrCarregaModem.Start()
End Sub
Public Sub trabalhoThr()
Dim del As UpdateDelegate = AddressOf _carregaModem
Me.Invoke(del)
End Sub
Public Sub _carregaModem()
lblStatusModem.ForeColor = Color.Gray
lblStatusModem.Text = "Verificando Por Favor Aguarde..."
Declaracoes.iRetorno = Declaracoes.eBuscarPortaVelocidade_MODEM_DarumaFramework()
If Declaracoes.iRetorno = 1 Then
lblStatusModem.Text = "Pronto Para Uso!"
lblStatusModem.ForeColor = Color.Green
Else
lblStatusModem.Text = "Erro de Conexao Com Modem!"
lblStatusModem.ForeColor = Color.Red
End If
End Sub
desde ja agradeço !!
Solução
Public Sub trabalhoThr()
lblStatusModem.Text = "Verificando..."
Declaracoes.iRetorno = Declaracoes.eBuscarPortaVelocidade_DUAL_DarumaFramework()
If Declaracoes.iRetorno = 1 Then
lblStatusModem.Text = "Pronto Para Uso!"
lblStatusModem.ForeColor = Color.Green
Else
lblStatusModem.Text = "Erro de Conexao Com Modem!"
lblStatusModem.ForeColor = Color.Red
End If
End Sub
Private Sub frmChamados_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Control.CheckForIllegalCrossThreadCalls = False
trModem = New Thread(AddressOf trabalhoThr)
trModem.Start()
trTela = New Thread(AddressOf carregaTela)
trTela.Start()
End Sub
Bem ainda ta ocorrendo uma travadinha mais acho que é alguma outra coisa e não esta parte, do mesmo jeito obrigado !!
É mais fácil você colocar tudo em um lugar só ao invés de usar o delegate