Ir para o conteúdo
hdricard

Actualizar dados de uma DataGridView com várias Threa

Mensagens Recomendadas

hdricard

Bom dia,

Preciso da vossa ajuda, desde já o meu obrigado.

Tenho um projecto em :NET C# 3.5 WindowsForms.

Preciso de mostrar informação de 350 registos numa DataGridView.

Esta informação sofre alterações constantes e eu preciso de as mostrar ao utilizador "na hora". Tenho dois timers, que consomem um WebService, em métodos diferentes e que alteraram a informação que está na Grid, por vezes 5 vezes por segundo.

É informação critica, o software é especificamente para isso e não posso falhar.

Implementei este problema da seguinte forma:

public class Data : INotifyPropertyChanged
{
  private colunaA;
  private colunaB;
  private colunaC;
  public event PropertyChangedEventHandler PropertyChanged;

  public Data() { }

  public ColunaA { get { return this.colunaA; } set { if (this.colunaA != value) { this.colunaA = value; onpropertychanged("ColunaA"); } }
  ...

  private void onpropertychanged(string propertyName)
	{
		if (PropertyChanged != null)
		{
			PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
		}
	}
}

Criei uma BindingList<Data> onde guardo todos os 350 registos que preciso de popular na Grid.

Os dois timers obtem a informação dos métodos do WebService e percorrem a BindingList<Data>, alterando os registos sempre que há alterações.

O objecto Data ao receber alterações vai disparar o onpropertychanged e informar a DataGridView que precisa de ser alterada.

Isto foi uma solução (para mim optima) para refrescar a informação da DataGridView sem ser necessário recorrer ao refresh ou update, ...

O problema é que tenho sérias duvidas de duas coisas:

- será que a informação alterada na DataGridView pelo INotifyPropertyChanged ocorre apenas no registo que foi alterado? Por vezes, ou mtas vezes parece-me que a alteração ocorre em todos os registos.

- a nivel de performance, na vossa opinião, é a solução perfeita? Os timers (do .Net) são a solução ideial para correr de X em X tempo e actualizar a DataGridView?

Estou com bastante dificuldade em perceber se implementei o melhor processo possível para este caso. Gostava de ouvir a vossa opinião e que alternativas sugeria para melhor o processo?

Obrigado mais uma vez pelas possíveis ajudas.

Abraço

Hugo

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa tarde,

Relativamente à preformance da aplicação, não tens hipotese de fazer os pedidos com metodos assincronos ? Penso que poderias ganhar desempenho no com essa alternativa.

O INotifyPropertyChanged, não tenho a certeza, mas creio que no caso, não faz o reset mas sim o refresh(), da datagridview sem fazer o reset, mas não tenho a certeza, pois não usso esse metodo com frequência.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
hdricard

Obrigado,

Sim, utilizo métodos assíncronos.

Só gostaria de perceber se existem alternativas ou se a forma como implementei é mesmo a mais correcta, ...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.