Boa tarde a todos. Eu estou fazendo um sistema que possui uma interface extremamente carregada!!! É uma aplicação MDI que possui vários forms abertos que exibem alguns dados...
Ela funciona da seguinte forma: O Load inicial dos dados é feito consumindo um WebService. Após isso, ele se conecta em um servidor e fica recebendo as atualizações das informações via Sockets... Eu "trato" a informação que o servidor me mandae a incluo no DataTable que já existe (o que foi definido na propriedade DataSource do DataGrid).
Ex.:
public void CarregarDados()
{
try
{
this.dtg.SuspendLayout();
DataSet ds = ws.Carregar();
this.dtg.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
ExibirErro(ex);
}
finally
{
this.dtg.ResumeLayout();
}
}
public void On_DadoRecebido(string xml)
{
try
{
this.dtg.SuspendLayout();
/* trato a informação, crio um novo DataRow com esta informação e o adiciono no grid */
}
catch(Exception ex)
{
ExibirErro(ex);
}
finally
{
this.dtgResumeLayout();
}
}
Minha interface as vezes dá umas "travadas". O processamento vai lá no alto. Eu experimentei não definir o DataSource do Grid e manter este DataTable em memória porém não exibindo no grid. Assim, o processamento da minha máquina ficou muuuiitoo melhor. Chego a conclusão que o problema está na hora que o DataGrid faz o "Paint" dos dados... Estou correto? Existe alguma outra forma de trabalhar com dados vindos de um DataTable de forma mais rápida? Existe alguma outra forma de trabalhar com o DataGrid ou senão, existe algum outro DataGrid que não apresente este comportamento
Obrigado. Boa Tarde.