none
Adaptar Async a uma função RRS feed

  • Pergunta

  • Olá

    Gente, alguém me ajuda adaptar o código a baixo a um Async?

     

        Public Shared LastSysTime As DateTime

    Public Shared LastSysTime As DateTime Public Function GetNISTTime(ByVal host As String) As DateTime Dim timeStr As String Try Dim reader As New StreamReader(New TcpClient(host, 13).GetStream) LastSysTime = DateTime.UtcNow() timeStr = reader.ReadToEnd() reader.Close() Catch ex As SocketException Label1.Text = ex.Message Catch ex As Exception Label1.Text = ex.Message End Try Dim jd As Integer = Integer.Parse(timeStr.Substring(1, 5)) Dim yr As Integer = Integer.Parse(timeStr.Substring(7, 2)) Dim mo As Integer = Integer.Parse(timeStr.Substring(10, 2)) Dim dy As Integer = Integer.Parse(timeStr.Substring(13, 2)) Dim hr As Integer = Integer.Parse(timeStr.Substring(16, 2)) Dim mm As Integer = Integer.Parse(timeStr.Substring(19, 2)) Dim sc As Integer = Integer.Parse(timeStr.Substring(22, 2)) Dim Temp As Integer = CInt(AscW(timeStr(7))) Return New DateTime(yr + 2000, mo, dy, hr, mm, sc) End Function


    É uma função para obter a data online, só que trava um pouco meu form, e como é usado no início fica ruim.

    Desde já agradeço

    domingo, 18 de dezembro de 2016 23:47

Respostas

Todas as Respostas

  • Olá Eliseu,

    Para o async funcionar você precisa fazer uma combinação de async/await.

    Dá uma olhada na referência: https://msdn.microsoft.com/pt-br/library/hh191564.aspx?f=255&MSPPError=-2147217396

    Se preferir, pode usar um BackGroundWorker. Segue referência: http://www.macoratti.net/vbn5_ept.htm

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 19 de dezembro de 2016 01:03
  • Olá André Obrigado por me ajudar. Já dei uma olhada mas não consegui adaptar ao meu código. Eu não consigo intender a lógica do async. :/

    Tentei, mas não deu certo:

     Public Async Function GetNISTTimeAsync(ByVal host As String) As Task(Of DateTime)
            Dim timeStr As String
                Dim reader As New StreamReader(New TcpClient(host, 13).GetStream)
                LastSysTime = DateTime.UtcNow()
                timeStr = Await reader.ReadLineAsync() 'reader.ReadToEnd()
                reader.Close()
    End function


    • Editado Eliseu5 segunda-feira, 19 de dezembro de 2016 01:53
    segunda-feira, 19 de dezembro de 2016 01:44
  • Bom dia Eliseu5,

    Qual seria sua dúvida específica sobre o async/await ?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é 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.

    terça-feira, 20 de dezembro de 2016 12:04
    Moderador
  • Olá Robson

    A dúvida é como adaptar o async/await  ao meu código. Não faço ideia de como fazer. :/

    terça-feira, 20 de dezembro de 2016 13:09