none
Problema com List<> RRS feed

  • Pergunta

  • Boa noite pessoal

    Estou com um problema com o List<>, eu carrego os dados do banco no list<> isto faço ao carregar a aplicação.

    Quando vou ler a lista ele esta sem os dados.

    queria que o List fica-se vivo ate eu fechar a aplicação.

    Veja o código.

    public bool CaregaPrecoCarro()
            {
    
               ListaPrecosCarro = new List<PrecoCarro>();
    
                //ListaPrecosCarro.Add(new PrecoCarro(10, 15.12, "Carro"));
    
                try
                {
                    using (NpgsqlConnection connection = new NpgsqlConnection(Variaveis.StringConexaoPG))
                    {
    
                        NpgsqlCommand commando = new NpgsqlCommand("Select \"CodTipo\",\"ValorHR\",\"Tipo\"  From \"Preco_qry\" Where \"ClienteNCM\"=" + VariaveisNCMD.ClienteNCM, connection);
                        connection.Open();
    
                        NpgsqlDataReader rs = commando.ExecuteReader();
                        while (rs.Read())
                        {
    
                            Int64 Codigo = rs.GetInt64(0);
                            double Preco = rs.GetDouble(1);
                            string Tipo = rs.GetString(2).Trim();
    
                            ListaPrecosCarro.Add(new PrecoCarro(Codigo,Preco,Tipo));
    
                            
                        }
                        rs.Close();
                        return true;
                    }
                    //return false;
                }
                catch (Exception ex)
                {
    
                    ffuncao.Ierror(ex);
                    return false;
                }

    O código acima é executado ao carregar a aplicação.

    O código abaixo esta em um form, veja o código.

    Onde leio a list<>

     void Entrada()
            {
                ListaPrecosCarro = new List<PrecoCarro>();
    
                if (CodVeiculo > 0)
                {
    
                    
                    PrecoCarro ListadePreco = ListaPrecosCarro.Find(delegate (PrecoCarro p1) { return p1.ID == CodTipoVeiculo; });
    
                    double Preco = ListadePreco.Preco;
    
                    string tipo = ListadePreco.Tipo;
    
    
    
    
                    if (ffuncaoBD.Grava("Insert Into \"EntradaSaidaVeiculo\" "
                        , new string[] {"Veiculo","Entrada","UserEntrada" }
                        , new string[] {CodVeiculo.ToString(),DateTime.Now.ToString(),Variaveis.CodUsuario.ToString()}
                        , new string[] {"bi","dt","bi" }
                        , 0) == true)
                    {
                        lblInfo.Text = "Entrada de veiculo Reslizada com sucesso!";
                        //Manda imprimir
                        txtPlaca.Text = "";
                        CodVeiculo = 0;
                        CriaArrayControl();
                    }
                    else
                    {
                        ffuncao.msg("Não foi possível dar entrada no veiculo referente a Placa ( " + txtPlaca.Text.Trim() + " ) \n Tente novamente, se o erro percistir contate o desenvolvedor.", MessageBoxIcon.Error, MessageBoxButtons.OK);
    
                    }
                }
    

    Agradeço a ajuda.


    Nilson Morgenstern

    domingo, 11 de março de 2018 00:25

Respostas

  • Olá amigo boa noite,

    Se vc precisa que uma variável fique viva durante toda aplicação. Deve se declarar como Estática ("static"), resumidamente a diferença para uma variavel estática é que ela pertence a classe e não ao objeto, sendo assim, são armazenadas em um local diferente na memória, onde não são coletadas, diferente das variáveis não-estaticas que são coletadas quando perdem a referência. 

    Leia -> https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/static

    Sendo assim atribua o modificador static na declaração da variável ListaPrecoCarro

    Espero ter ajudado, um abraço!



    • Editado Edson Loris domingo, 11 de março de 2018 02:39
    • Marcado como Resposta Ncm Developer domingo, 11 de março de 2018 13:34
    domingo, 11 de março de 2018 02:38