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