none
Pausar uma Thread RRS feed

  • Pergunta

  • Senhores,

    Sei que há vários exemplos e respostas sobre Threads mas, a minha não consegui nada parecido.

    Criei uma Thread para trabalhar em BackGround (com Delegate e tudo), mas em determinado momento eu preciso pausar a Thread para que haja o carregamento do WebBrowser (VB.NET). Mas, ao executar o comando Threading.Thread.Sleep(5) o Form também trava. E é isso o que eu não quero. Eu quero pausar somente a Thread e não travar o form.

    Como eu poderia fazer isso?

    Meu código

    Private Delegate Sub iNavegar(ByVal qualUrl As String, ByVal qualWebBrowser As WebBrowser)
    
    ...
    
    Private Sub btnPesquisa_Click(sender As System.Object, e As System.EventArgs) Handles btnPesquisa.Click
        Me.BeginInvoke(New iNavegar(AddressOf Navegar), New Object() {objPropriedades.Url, WebBrowser1})
    End Sub
    
    Public Sub Navegar(ByVal qualUrl As String, ByVal qualWebBrowser As WebBrowser)
        With qualWebBrowser
            .Navigate(qualUrl)
            .ScriptErrorsSuppressed = True
            Threading.Thread.Sleep(5000) 'AQUI EU PEÇO PARA ESPERAR
            CarregarWebBrowser(qualWebBrowser)
        End With
    End Sub
    
    'O problema é que o Form também trava e isto é inviável para a aplicação
    O projeto é WindowsForms.
    Obrigado
    • Editado Oliveira Leal segunda-feira, 3 de dezembro de 2012 11:03
    segunda-feira, 3 de dezembro de 2012 11:01

Respostas

  • Resolvido:

    Eu retirei o Threading.Thread.Sleep(5000) e criei um procedimento de espera usando:

    While Form1.Timer1.Enabled
        Application.DoEvents()
    End While
    Assim conseguir fazer o usuário continuar usando o Form enquanto o Programa fazia o processo em outra Thread.
    • Marcado como Resposta Oliveira Leal segunda-feira, 3 de dezembro de 2012 15:35
    segunda-feira, 3 de dezembro de 2012 15:34