none
DownloadString travando form RRS feed

  • Pergunta

  • Olá 

    Gente, alguém me ajuda. Estou usando:

     Dim wc As New WebClient()
     Dim data = wc.DownloadString("http://mysite/example1.txt")
     textbox1.text = data

    para obter um valor, mas está travando o form enquanto verifica. Tentei usar o método "task wait" mas não consegui. Possui várias sequencias que não entendo, até mesmo repetidas e resulta em vários erros. 

    Se alguém puder me ajudar, fornecendo um código simples eu agradeço.

    terça-feira, 16 de fevereiro de 2016 19:21

Respostas

  • Você pode usar um método assíncrono, como no exemplo abaixo:

    Public Shared Async Function GetUrlContentAsync(url As String) As Task(Of String)
        Try
    
            Dim webClient As New System.Net.WebClient
            Dim webContent = Await webClient.DownloadStringTaskAsync(url)
    
            Return webContent
            End Function


    Antero Marques

    • Marcado como Resposta Marcos SJ segunda-feira, 22 de fevereiro de 2016 14:55
    quinta-feira, 18 de fevereiro de 2016 17:40

Todas as Respostas

  • Era para funcionar, mas, você tem permissão de leitura desse arquivo!

    Qualquer coisa tente assim!

    Dim wc As New WebClient()
    
    wc.DownloadFile("http://localhost/example1.txt", "d:\example1.txt")
    
    Dim data As String = System.IO.File.ReadAllText("d:\example1.txt")



    Fulvio C

    terça-feira, 16 de fevereiro de 2016 21:01
  • Olá Fulvio

    Meu código funciona, só que trava o form por alguns segundos, é isso que quero evitar.

    terça-feira, 16 de fevereiro de 2016 23:08
  • Eliseu5, o Wait faz a Tarefa aguardar até que o comando seja completado. Isso não vai ser solução pro seu caso.

    O que você precisa é colocar o bloco TODO (ou pelo menos a parte do DownloadFile) em uma outra tarefa completamente diferente.

    Aqui tem um Tutorial de Thread em C#. Entendo que você está em VB.net, mas é basicamente a mesma coisa; tire o ponto-e-vígula, use o Dim para as variáveis, essas coisas - mas o conteúdo (classes, funções, namespaces) vai ser o mesmo e é bem explicado.

    quarta-feira, 17 de fevereiro de 2016 00:20
  • Olá Sammuel

    Ok, vou verificar, obrigado.

    quarta-feira, 17 de fevereiro de 2016 09:57
  • Boa tarde Eliseu5,

    Tudo bem?

    Conseguiu fazer a verificação para validar a repsosta do SammuelMiranda?

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 17 de fevereiro de 2016 18:53
  • Olá

    Não, eu não entendo, são códigos grandes com funções parecidas e que eu não faço ideia pra que servem nem como fazer. Toda vez que tentei usar o Wait não deu certo, surgem erros, e não funciona.


    • Editado Eliseu5 quinta-feira, 18 de fevereiro de 2016 16:36
    quinta-feira, 18 de fevereiro de 2016 16:35
  • Você pode usar um método assíncrono, como no exemplo abaixo:

    Public Shared Async Function GetUrlContentAsync(url As String) As Task(Of String)
        Try
    
            Dim webClient As New System.Net.WebClient
            Dim webContent = Await webClient.DownloadStringTaskAsync(url)
    
            Return webContent
            End Function


    Antero Marques

    • Marcado como Resposta Marcos SJ segunda-feira, 22 de fevereiro de 2016 14:55
    quinta-feira, 18 de fevereiro de 2016 17:40
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 22 de fevereiro de 2016 14:55