FUN?ÃO ASSINCRONA
                    Boa noite galera...
Tava dando uma olhada sobre métodos assÃncronos e tentei utilizar na minha função;
 
E tentei utilizar a lista assim;
E aparece: Expressão é do tipo [Ô]Task(Of List(Of Produtos_ACA))[Ô], que não é um tipo de coleção.
Porque?
                
            Tava dando uma olhada sobre métodos assÃncronos e tentei utilizar na minha função;
   Public Shared Async Function SearchAca() As Task(Of List(Of Produtos_ACA))
        Dim SQL As String = [Ô]SELECT * FROM produtos_aca Where IdCliente=[ô][Ô] & GetCliente.ID_M & [Ô][ô][Ô]
        Dim Result = New List(Of Produtos_ACA)
        Try
            Using Conex As New MySqlConnection(GetSQL.SERVIDOR)
                Using Cmd As New MySqlCommand(SQL, Conex)
                    Try
                        Await Conex.OpenAsync
                    Catch ex As Exception
                        Erro.ShowMe([Ô]Erro inesperado ao tentar abrir conexão com o servidor :/[Ô], ex.ToString, True)
                    End Try
                    Using Ler As MySqlDataReader = Await Cmd.ExecuteReaderAsync
                        While Await Ler.ReadAsync
                            Result.Add(New Produtos_ACA(Ler.Item([Ô]Id[Ô]), Ler.Item([Ô]IdCliente[Ô]), Ler.Item([Ô]IdProduto[Ô])))
                        End While
                    End Using
                End Using
            End Using
        Catch ex As Exception
            Erro.ShowMe([Ô]Erro inesperado[Ô], ex.ToString,, [Ô]Erro em: MetodoNotificar.SearchACA[Ô])
        End Try
        Return (Result)
    End Function E tentei utilizar a lista assim;
   Dim LisAc = SearchAca()
        For Each I As Produtos_ACA In LisAc
        Next E aparece: Expressão é do tipo [Ô]Task(Of List(Of Produtos_ACA))[Ô], que não é um tipo de coleção.
Porque?
Citação:Dim LisAc = SearchAca()
Quando você declara o [Ô]dim[Ô] desta maneira, a plataforma tenta descobrir qual o tipo pra você dinamicamente. Como o tipo de retorno do seu método tá declarado como uma task, então a variável LisAc passará a ser uma task também, por isso gera um erro ao fazer loop, pois ela não é uma coleção.
Não sei se vai funcionar, mas tente declarar explicitamente, assim:
Dim LisAc as List = SearchAca()
                    Sua função SearchAca é assÃncrona com retorno de valor, então para poder usar corretamente ela a função que a chama também deve ser assÃncrona e deve usar
            Dim LisAc = Await SearchAca()
                    Outra coisa importante, métodos assÃncronos no connector MySQL são relativamente novos, De acordo com a documentação, você precisa usar .NET Framework 4.0 ou superior e versão 6.9(UI!!!) ou superior do conector 
                
            
                    Funcionou...
Seria interessante, colocar métodos assÃncronos em todas as minhas funções da classe? Seria uma boa prática? (levando em consideração a quantidade grande de dados)
            Seria interessante, colocar métodos assÃncronos em todas as minhas funções da classe? Seria uma boa prática? (levando em consideração a quantidade grande de dados)
                    Se for necessário o uso de métodos assÃncronos, sim. Mas não é [Ô]boa prática[Ô] necessariamente. Métodos assÃncronos são usados quando processamento assÃncrono é necessário. Não são [Ô]melhores[Ô] ou [Ô]piores[Ô] que métodos sÃncronos. Você não terá nenhum ganho de performance, se é o que você está querendo...
                
            
                    Mas não travar a tela, já não seria um [Ô]ganho de performance[Ô]
                
            
                    Um bom motivo para usar aplicações Web, onde esse tipo de coisa é bem diferente. Você pode ter um controle(componente) sendo carregado em background de modo assÃncrono, assim como vários outros, tudo ao mesmo tempo. 
                
            
                        Tópico encerrado , respostas não são mais permitidas
                    
                


