Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
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)
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.
como esta a estrutura de seu bd ? relacionamento, tipos de campos etc