Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elnata COsta

Consulta Constante com Mysql TRAVA C#

Recommended Posts

Meu código é o seguinte pessoal:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Drawing.Drawing2D;
using System.Diagnostics;
using MySql;
using MySql.Data.MySqlClient;
using MySql.Data;
using System.Runtime.InteropServices;



namespace twMerco
{
    public partial class frmLogadoControle : Form
    {

           private void button2_Click(object sender, EventArgs e)
        {
            timerChat.Enabled = true;
        }

         
           private void timerChat_Tick(object sender, EventArgs e)
        {
            string ICAOoperante = txtICAOsearchChat.Text;
            string freqOperante = txtFrequenciaOperar.Text;

            //define o dataset
            mDataSet = new DataSet();

            //define string de conexao e cria a conexao
            mConn = new MySqlConnection(" Persist Security Info=False;server=localhost;database=v2;uid=v2;pwd=password");

            

            try
            {
                //abre a conexao
                mConn.Open();
            }
            catch (System.Exception k)
            {
                MessageBox.Show(k.Message.ToString());
            }

            //verificva se a conexão esta aberta
            if (mConn.State == ConnectionState.Open)
            {
                //cria um adapter usando a instrução SQL para acessar a tabela Clientes
                mAdapter = new MySqlDataAdapter("SELECT * FROM `chat` WHERE `icao` = '" + ICAOoperante + "' AND `frequencia` = '" + freqOperante + " '", mConn);
                //mAdapter = new MySqlDataAdapter("SELECT * FROM frequencias_aeroportos WHERE airport_ident ='SBGL'", mConn);
                //preenche o dataset via adapter
                mAdapter.Fill(mDataSet, "chat");
                //atribui a resultado a propriedade DataSource do DataGrid
                dataGridvChat.DataSource = mDataSet;
                dataGridvChat.DataMember = "chat";

            }
        }


    }
}

O código até que funciona, porém como eu quero uma consulta constante no Banco de Dados eu setei o intervalo do timer em 250. Só que com isso o programa trava muitoooo, eu até cheguei colocar em 5 segundos só que isso é muita demora, e trava de qualquer maneira na consulta. Há algum outro método para que eu possa fazer essa consulta constante no MySql sem que meu software trave?

 

Agradeço a todos desde já.. :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta a estrutura de seu bd ? relacionamento, tipos de campos etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta a estrutura de seu bd ? relacionamento, tipos de campos etc

 

id -> int(11), AUTO_INCREMENT, PRIMARY

(/*este é o id do usuário que envia a mensagem*/)

pid -> int(11)

(este é o id do usuário que envia a mensagem)

atc_tipo -> int(11)

(/*código inserido no programa para diferenciar entre adms*/)

icao -> varchar(10)

(/*frequência referente a cada ICAO, pois existem várias frequências iguais, porém apenas umas para cada ICAO*/)

frequencia -> varchar(8)

/*mensagem que do chat*/

menssagem -> varchar(600)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Timer usa muita memória utilizada pela aplicação para funcionar. De qualquer forma seu programa vai usar bastante memória se precisar ficar fazendo consultas constantes com o banco. Então eu aconselho você a usar Threads, que nada mais são do que processos que rodam em segundo plano, você vai ter alguns problemas para atualizar os controles no seu form já que as threads tem umas peculiaridades para acessar controles em forms.

 

Outra dica seria usar BackgroundWorkers que funcionam basicamente da mesma maneira, mas não iniciam uma nova thread e também tem eventos que podem ser manipulados de dentro do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.