none
Mensagem de erro no C# RRS feed

  • Pergunta

  • fiz um sistema em C# estou com esse erro de vez enquando com a mensagem nomedoexecutavel has encountered a problem and needs to close. We are sorry for the inconvenience, gostaria de saber por que gera esse erro, segue o código abaixo:

     public partial class Form1 : Form
        {
            Boolean encerrar = false;
            MySqlConnection conexao = new MySqlConnection("server=localhost; userid=root; pwd=; database=prom");
            MySqlCommand command;
            MySqlDataReader mdr;

            string text = System.IO.File.ReadAllText(@"C:\V2SWS\getserial.log");

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {                 

            }

            private void txtResult_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((Keys)e.KeyChar == Keys.Enter)
                {
                    if (txtResult.Text != txtGrupo.Text)
                    {
                        lbError.Visible = true;
                        txtResult.Text = "";
                    }
                    else if(txtFamily.Text == "T46S" || txtFamily.Text == "T470" || txtFamily.Text == "T480" || txtFamily.Text == "E480")
                    {
                        txtResult.Visible = false;
                        lbError.Visible = false;
                        lbAviso.Visible = true;
                        txtKit.Visible = true;
                        txtKit.Select();     
                    }
                    else
                    {
                        encerrar = true;
                        Application.Exit();
                    }
                }
            }

            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (encerrar == false)
                {
                    e.Cancel = true;
                }
            }

            private void txtKit_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((Keys)e.KeyChar == Keys.Enter)
                {
                    if (txtResult.Text != txtKit.Text)
                    {
                        lbError.Visible = true;
                        lbAviso.Visible = false;
                        txtKit.Text = "";
                    }
                    else
                    {
                        encerrar = true;
                        Application.Exit();
                    }
                }
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                SendKeys.Send("{ESC}");
                timer1.Stop();
            }

            private void Form1_Shown(object sender, EventArgs e)
            {
                this.Refresh();
                //this.Activate();
                string serial = Convert.ToString(text.Substring(2));
                txtSerial.Text = serial;

                //MessageBox.Show(serial);


                var sql = "select grupo, c.familia from prom.order_sn a inner join k2config.tabmopeso b on a.order_num = b.order_num right join k2config.tabmt c on mid(uwip_barcode,3,4) = c.mt where uwip_barcode = '" + txtSerial.Text + "'";

                try
                {
                    conexao.Open();
                    command = new MySqlCommand(sql, conexao);
                    MySqlDataReader dr = command.ExecuteReader();

                    if (dr.Read())
                    {
                        if (dr["familia"] != DBNull.Value)
                        {
                            txtFamily.Text = dr.GetString("familia");
                            txtResult.Select();
                        }
                        else
                        {
                            timer1.Start();
                            MessageBox.Show("NÃO CONSTA A FAMILIA PARA ESSE SERIAL");
                        }

                        if (dr["grupo"] != DBNull.Value)
                        {
                            txtGrupo.Text = dr.GetString("grupo");
                            txtResult.Select();
                        }
                        else
                        {
                            timer1.Start();
                            MessageBox.Show("NÃO CONSTA O GRUPO PARA ESSE SERIAL");
                        }
                    }
                    else
                    {
                        MessageBox.Show("NÃO HÁ INFORMAÇÃO PARA ESSE SERIAL NO BANCO DE DADOS");
                        encerrar = true;
                        Application.Exit();
                    }
                }
                catch (MySqlException)
                {
                    //MessageBox.Show(ex.Message);
                }
                finally
                {
                    conexao.Close();
                }
            }
            
        }

    terça-feira, 11 de setembro de 2018 14:29

Respostas

  • Vinicius DDS,

        Eu pensei que iria especificar melhor o erro e descobrir o que está acontencendo...

        Como o erro é intermitente, então precisamos pensar em algo como:

        1 - O registro no MySql está aberto por outro usuário e não pode ser acessado no momento?
        2 - O LOG "getserial.log" está sendo visualizado por alguma pessoa e não pode ser gravado?
        3 - Esse erro aparece em somente um equipamento (hardware) ou em todos?
        4 - Está sendo executado outro programa concorrente a esse no mesmo momento?

    []'s,
    Fabio I.
    terça-feira, 11 de setembro de 2018 17:48
  • Vinicius DDS,

       Talvez...

       4 - Seu arquivo "getserial.log" fique alocado ou bloqueado pelo sistema que manda a informação e o sistema que lê trave por causa disso.
           4.1 - Minha Solução: Tente verificar se o sistema que manda com certeza solta rapidinho esse arquivo e o sistema que repede deve repitir a operação 3x em intervalos de alguns segundos...

       3 - Soluções possíveis, porém trabalhosas ou custosas:
           3.1 - Tente instalar em outra máquina que roda Windows XP;
           3.2 - A máquina que roda Windows XP pode ser atualizada para Windows 7?

       Mais trabalho ainda!
       Já tentou fazer um Backup geral e completo da máquina que roda Windows XP para poder formatá-la e instalar o Windows XP de novo?


    []'s,
    Fabio I.
    quarta-feira, 12 de setembro de 2018 12:01

Todas as Respostas

  • Vinicius DDS,

       Experimente isso:

    ===========================================================
    WinForms application needs to close unhandled exception [duplicate]

    Crie um manipulador para UnhandledException em seu programa para que ele possa ajudá-lo a depurar o problema e lidar com a exceção de onde quer que ele tenha sido lançado (bem como outras exceções não tratadas). Por exemplo

    AppDomain.CurrentDomain.UnhandledException += (s,e) => 
    {
        Exception ex = (Exception)e.ExceptionObject;
        Debug.WriteLine(ex.Message);                                          
    };

    https://stackoverflow.com/questions/17596766/winforms-application-needs-to-close-unhandled-exception
    ===========================================================
    "(application.exe) has encountered a problem and needs to close. We are sorry for inconvenience"

    https://social.msdn.microsoft.com/Forums/windows/en-US/47d22408-ed84-42f1-a10b-e4ac971f3bcb/applicationexe-has-encountered-a-problem-and-needs-to-close-we-are-sorry-for-inconvenience
    ===========================================================
    WindowsService.exe has encountered a problem and needs to close. We are sorry for the inconvenience

    https://stackoverflow.com/questions/4863315/windowsservice-exe-has-encountered-a-problem-and-needs-to-close-we-are-sorry-fo
    ===========================================================

    []'s,
    Fabio I.
    terça-feira, 11 de setembro de 2018 16:56
  • então Fabio, havia colocado esse código abaixo que seria mais o menos a mesma coisa que você me sugeriu, mas dava a mesma mensagem de erro da minha pergunta e não me trazia onde estava o erro so essa janela:

    catch (MySqlException ex)
                {
                    //MessageBox.Show(ex.Message);
                }

    terça-feira, 11 de setembro de 2018 17:21
  • Vinicius DDS,

        Eu pensei que iria especificar melhor o erro e descobrir o que está acontencendo...

        Como o erro é intermitente, então precisamos pensar em algo como:

        1 - O registro no MySql está aberto por outro usuário e não pode ser acessado no momento?
        2 - O LOG "getserial.log" está sendo visualizado por alguma pessoa e não pode ser gravado?
        3 - Esse erro aparece em somente um equipamento (hardware) ou em todos?
        4 - Está sendo executado outro programa concorrente a esse no mesmo momento?

    []'s,
    Fabio I.
    terça-feira, 11 de setembro de 2018 17:48
  • Fabio respondendo sua pergunta 4, sim eu tenho um sistema em auto it que manda o serial da maquina para esse getserial.log e o meu c# pegar o serial dentro deste arquivo getserial.log ele precisa desse serial para buscar no banco dados a informação do grupo e familia, já na sua pergunta 3 não só uma maquina esta rodando o sistema op dela é xp, no meu note não deu este problema porém o SO do meu note é win7.
    • Editado Vinicius DDS terça-feira, 11 de setembro de 2018 19:29
    terça-feira, 11 de setembro de 2018 19:23
  • Vinicius DDS,

       Talvez...

       4 - Seu arquivo "getserial.log" fique alocado ou bloqueado pelo sistema que manda a informação e o sistema que lê trave por causa disso.
           4.1 - Minha Solução: Tente verificar se o sistema que manda com certeza solta rapidinho esse arquivo e o sistema que repede deve repitir a operação 3x em intervalos de alguns segundos...

       3 - Soluções possíveis, porém trabalhosas ou custosas:
           3.1 - Tente instalar em outra máquina que roda Windows XP;
           3.2 - A máquina que roda Windows XP pode ser atualizada para Windows 7?

       Mais trabalho ainda!
       Já tentou fazer um Backup geral e completo da máquina que roda Windows XP para poder formatá-la e instalar o Windows XP de novo?


    []'s,
    Fabio I.
    quarta-feira, 12 de setembro de 2018 12:01
  • o que acho estranho que antes quando eu estava fazendo a leitura do getserial.log dentro do metodo shown dava a mensagem de erro que o arquivo esta sendo usado por outro sistema ai eu declarei ele como global não deu mas esse erro de conflito, estou achando que pode ser a busca na query estou mudando para parametro em vez de concatenar a variavel do serial segue o código abaixo:

    MySqlCommand sql  = new MySqlCommand("select grupo, c.familia from prom.order_sn a inner join k2config.tabmopeso b on a.order_num = b.order_num right join k2config.tabmt c on mid(uwip_barcode,3,4) = c.mt where uwip_barcode = @SERIAL",conexao);
                sql.Parameters.Add(new MySqlParameter("@SERIAL", txtSerial.Text));

    quarta-feira, 12 de setembro de 2018 12:40
  • Vinicius DDS,

        Sim, tente isso, mas minha dúvida é:

        - E se o outro sistema tiver colocado o arquivo "getserial.log" como READ-ONLY ou esteja prendendo o arquivo?

    []'s,
    Fabio I.
    quarta-feira, 12 de setembro de 2018 12:46
  • ele esta fechando rápido segue o codigo do auto it:

    $stat = ControlGetText("Pro-Make System Standard WorkStation", "", "Edit1") ;capturando a uwip do PROM
    $stat3 = ControlGetText("Pro-Make System Standard WorkStation", "", "Edit3") ;capturando a uwip do PROM

    if $stat = "" or $stat <> $statAnt Then
    if $stat = "" then $stat = $stat3
    if StringInStr($stat,'1S') > 0 and StringInStr($stat,'PE') Then
    ;Msgbox(0,$stat,$stat,10)

    $hFileOpen = FileOpen($sFilePath, 2)
    If $hFileOpen <> -1 Then

    FileWrite($hFileOpen, "/w" & $stat)
    FileClose($hFileOpen)

    EndIf

    Endif

    EndIf

    quarta-feira, 12 de setembro de 2018 13:31