CARREGANDO EM SEGUNDO PLANO
Citação::
me confundi então, evento é tipo, click, MouseHover, Leave....
o que seria um evento desse tipo então?
Observe o código que você mesmo colocou como exemplo. Nele, existe um loop, que percorre todas as linhas do DataReader, certo? Pois é você poderia colocar uma instrução RaiseEvent para cada linha percorrida. Na verdade vai da necessidade, mas você pode colocar eventos para cada coisa: Ao iniciar o método, para cada linha percorrida, ao terminar o método, enfim para qualquer coisa que você queira que um evento ocorra. Isso é útil para acompanhamento de processos por exemplo, assim, você sabe que o processo está em execução. Há quem use eventos até mesmo para tratamento de erros, mas eu desaconselho essa prática, para isso, existe os blocos try...catch, que você deveria usar de maneira diferente. Exceções, não são simplesmente para serem exibidas na tela em uma mensagem, como você está fazendo. Esse seu método, deveria estar dentro de uma classe, os blocos try...catch, deveria apenas lançar a exceção que deveria ser capturada no método que chamou esse, e então tratadas ou somente exibidas na tela. Ter um bloco try...catch simplesmente, não é tratamento de erros, ainda mais da maneira que está fazendo, tratando todas as exceções de modo genérico. Pare o cursor do mouse em cima do método [Ô]ExecuteReader[Ô]. Ele irá mostrar todas as exceções que o método pode lançar e todas elas deveriam estar tratadas com instruções catch apropriadas. Isso sim é algo mais parecido com tratamento de erros. Outra coisa importante que vejo no seu código e é digna de nota, é o uso de concatenação de query ao invés de parametrização. Usar parâmetros para queries ao invés de concatenar é muito mais eficiente, seguro e de fácil manutenção.
                    Sobre o RaiseEvent +- o que eu entendi
Minha classe;
E pra capturar;
Porém quando eu aperto o o botão, me aparece na tela uma mensagem que, Referência de objeto não definida para uma instância de um objeto.
            Minha classe;
    Public Event Lista(L As List(Of Clientes))
    Public Event AttStatus(At As String)
    Public Sub Todos(nick As String) 
        RaiseEvent AttStatus([Ô]Iniciando Conexão[Ô])
        Dim SqlAll As String = [Ô]SELECT c_idcliente, c_nick, c_level, c_vip, c_staff, c_gm, c_criador, c_img, c_imgCapa, trofeu  FROM cliente inner join estante on estante.idcliente = cliente.c_idcliente where c_nick LIKE [ô]%[Ô] & nick & [Ô]%[ô] order by c_idcliente desc;[Ô]
        Dim result As New List(Of Clientes)
        Try
            Using conn As New MySqlConnection(server_conf)
                Using cmd As New MySqlCommand(SqlAll, conn)
                    Try
                        RaiseEvent AttStatus([Ô]Conexão aberta[Ô])
                        conn.Open()
                    Catch ex As Exception
                        MsgBox(ex.ToString)
                    End Try
                    Try
                        RaiseEvent AttStatus([Ô]Iniciando Leitura[Ô])
                        Using rdr As MySqlDataReader = cmd.ExecuteReader()
                            While rdr.Read()
                                result.Add(New Clientes(rdr.Item([Ô]c_idcliente[Ô]), rdr.Item([Ô]c_nick[Ô]), rdr.Item([Ô]c_level[Ô]), rdr.Item([Ô]c_vip[Ô]), rdr.Item([Ô]c_staff[Ô]), rdr.Item([Ô]c_gm[Ô]), rdr.Item([Ô]c_criador[Ô]),
                                                        rdr.Item([Ô]c_img[Ô]), rdr.Item([Ô]c_imgCapa[Ô]), rdr.Item([Ô]trofeu[Ô])))
                            End While
                        End Using
                    Catch ex As Exception
                        MsgBox(ex.ToString)
                    End Try
                End Using
            End Using
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        RaiseEvent AttStatus([Ô]Finalizado[Ô])
        RaiseEvent Lista(result) E pra capturar;
   Private WithEvents T As Clientes
    Private Sub AttStatus(T As String) Handles T.AttStatus
        TextBox2.Text = T
    End Sub
    Private Sub CriaLista(L As List(Of Clientes)) Handles T.Lista
        For Each i As Clientes In L
            Dim label1 = New Label
            label1.Text = i.Nick & i.Level
        Next
    End Sub
    Private Sub Button2_Click() Handles Button2.Click
        T.Todos([Ô][Ô])
    End Sub Porém quando eu aperto o o botão, me aparece na tela uma mensagem que, Referência de objeto não definida para uma instância de um objeto.
                    Provavelmente esse erro está ocorrendo na linha [Ô]T.Todos([Ô][Ô])[Ô], certo?
                
            
                    Sim..
                
            
                    Experimente declarar assim a sua classe:
            
Private WithEvents T As Clientes = New Clientes
                    Da erro porque eu fala que eu preciso espeficiar os parametros do construtor da classe, que é;
              Public Sub New(_Id As Integer, _Nick As String, _Level As Integer, _Vip As String, _Staff As String, _Gm As String, _Criador As String, _Img As Byte(), _ImgCapa As Byte(), _trofeu As Integer)
 
                    Acho que você precisa separar entre a Classe clientes (onde tem o construtor) e a Classe MetodosClientes (onde você coloca o evento)
                
            
                    Sim separei....
Más kerp, a ideia desse processo em segundo plano, é para que quando carregar os dados o programa não trave
            Más kerp, a ideia desse processo em segundo plano, é para que quando carregar os dados o programa não trave
                    Carregamento de dados sempre vai gerar algum travamento. Muitos acreditam que colocar em uma thread separada vai resolver isso, mas não. O caso é que alguma ação está sendo feita, então ao menos um pouquinho disso vai ser notado, à menos que esse processamento esteja sendo feito no server. Existem técnicas para criar esses métodos de modo assÃncrono, ou seja, você dispara o método e em algum momento ele termina, mas a aplicação fica [Ô]livre[Ô]. é possÃvel, mas não muito simples.
                
            
                    E qual seria o caminho?
                
            
                            Faça seu login para responder
                        
                    

