PROGRAMA PAROU DE RESPONDER - INTERMITENTE
                    Boa tarde pessoal
Fiz um gerenciador para trabalhar no S@T em C#. Porem algo estranho esta acontecendo e não sei como resolver.
Hora funciona normal, porem do nada acontece algo e o sistema para de funcionar sem dar nenhuma excessão nem nada deste tipo.
Ja fiz vários Try Catch em pontos onde imaginei que algo poderia acontecer e nada.
Uso banco de dados MySQL com Mysql.Data.dll
Alguem sabe o que pode ser ?
                
            Fiz um gerenciador para trabalhar no S@T em C#. Porem algo estranho esta acontecendo e não sei como resolver.
Hora funciona normal, porem do nada acontece algo e o sistema para de funcionar sem dar nenhuma excessão nem nada deste tipo.
Ja fiz vários Try Catch em pontos onde imaginei que algo poderia acontecer e nada.
Uso banco de dados MySQL com Mysql.Data.dll
Alguem sabe o que pode ser ?
                    Detalhe que comigo no desenvolvimento não acontece nada.
                
            
                    Acabei de fazer um log em todas funções do meu sistema.
Cheguei a conclusão que o erro esta nesse metodo:
Tudo me leva a quer que é na linha [Ô]While (dr.read())[Ô], pois logo abaixo ja tem outra gravação do log e não chega lá.
O estranho é que hora funciona e hora não, fechei o gerenciador, retransmiti o cupom e validou normal. Alguem pode me ajudar por favor? Estou me desesperando ja pois tenho varios sistemas que faço da mesma forma e não da esse problema.
PS: A versão do Mysql.Data.dll é a mesma
                
            Cheguei a conclusão que o erro esta nesse metodo:
        public clsOrcamento GetOrc(long codorc1)
        {
            auditoria.GravaAuditoria([Ô]GetOrc([Ô] + codorc1.ToString () + [Ô])[Ô]);
            clsOrcamento _return = null;
            string retornoConexao;
            databases conecta = new databases();
            retornoConexao = conecta.conectaMySql();
            // abre a instancia do comando SQL
            if (retornoConexao != [Ô]Conectou[Ô])
            {
                return null;
            }
            else
            {
                try
                {
                    this.sql = [Ô]select * from orcamento where codorc=@codorc[Ô];
                    auditoria.GravaAuditoria(this.sql.Replace([Ô]@codorc[Ô],codorc1.ToString ()));
                    using (MySqlCommand cmd = new MySqlCommand(this.sql, conecta.conexao))
                    {
                        cmd.Parameters.AddWithValue([Ô]@codorc[Ô], codorc1);
                        using (MySqlDataReader dr = cmd.ExecuteReader())
                        {
                            if (dr.HasRows)
                            {
                                auditoria.GravaAuditoria([Ô]Achou dados[Ô]);
                                _return = new clsOrcamento();
                                auditoria.GravaAuditoria([Ô]Lendo dados[Ô]);
                                while (dr.Read())
                                {
   Tudo me leva a quer que é na linha [Ô]While (dr.read())[Ô], pois logo abaixo ja tem outra gravação do log e não chega lá.
O estranho é que hora funciona e hora não, fechei o gerenciador, retransmiti o cupom e validou normal. Alguem pode me ajudar por favor? Estou me desesperando ja pois tenho varios sistemas que faço da mesma forma e não da esse problema.
PS: A versão do Mysql.Data.dll é a mesma
                    Certamente é um bug dentro do seu próprio sistema que passou despercebido. 
                
            
                    Oi JABA, obrigado pela resposta.
Mas um bug que hora funciona e hora não funciona ? Não consegue me ajudar a achar, esta estranho isso. Verifiquei as propriedades do projeto, esta x86(pensei que poderia estar dando incompatibilidade). Nem com o Try Catch nao evita esse problema.
            Mas um bug que hora funciona e hora não funciona ? Não consegue me ajudar a achar, esta estranho isso. Verifiquei as propriedades do projeto, esta x86(pensei que poderia estar dando incompatibilidade). Nem com o Try Catch nao evita esse problema.
                    Coloque um try catch em todo metodo e dispare uma nova excecao quando capturar o erro, senão não vai acontecer nada se houver erro.
ex:
                
            ex:
public clsOrcamento GetOrc(long codorc1)
{
   try
     //todo o codigo do metodo
   catch
   {
     throw;
   }
}
                    Mesmo com o try que coloquei naquele ponto o sistema para de responder, ele nao [Ô]pula[Ô] o erro.
Coloquei o que voce falou e vou mandar ao cliente para testar.
            Coloquei o que voce falou e vou mandar ao cliente para testar.
Citação:public clsOrcamento GetOrc(long codorc1)
Não se esqueça que no local onde você chama esse metodo, a exceção pode não estar sendo disparada também. Ou seja, se tiver um erro dentro desse metodo, o objeto que o está chamando vai captura-lo, e se lá dentro tiver um catch, pode não estar deixando o erro chegar ao usuário.
                    eSTOU FAZENDO ASSIM AO CHAMAR ESTE METODO
                
                        clsOrcamento venda = null;
            // criamos nessa funçao o arquivo da venda o arquivo da venda
            try
            {
                venda = new bdsOrcamento().GetOrc(codorc);
            }
            catch (Exception erro)
            {
                venda = null;
            }
   Citação:clsOrcamento venda = null;
// criamos nessa funçao o arquivo da venda o arquivo da venda
try
{
venda = new bdsOrcamento().GetOrc(codorc);
}
catch (Exception erro)
{
venda = null;
}
Acho que esse é o seu problema. Ele captura o erro e o retém pra si. Faça assim pra ver como ele vai se comportar:
        clsOrcamento venda = null;
            // criamos nessa funçao o arquivo da venda o arquivo da venda
            try
            {
                venda = new bdsOrcamento().GetOrc(codorc);
            }
            catch (Exception erro)
            {
                venda = null;
[txt-color=#e80000]               throw;[/txt-color]
            }
                    JABA, vou tentar isso tambem. Porém é algo que nunca aconteceu. Normalmente o sistema em  uma excessao nao tratada retorna um Crash com detalhes de onde deu o problema e também com opção de encerrar a aplicação ou continuar a execução.
Isso que esta me [Ô]encafifando[Ô].
            Isso que esta me [Ô]encafifando[Ô].
                        Tópico encerrado , respostas não são mais permitidas