Escrito em October 3rd, 2008 as 8:20 pm por Guilherme Bacellar

1 Comentário

essa semana eu estive estudando (um pouco) a utilização de Thread’s para carregar-mos informações em forms. Depois de alguns problemas com as thread’s creio que consegui chegar em uma formula bem legal e gostaria de compartilhar com todos.

Passo 1 – Definir o que precisa ser carregado

Não é necessário dizer que carregar tudo com thread’s não seria legal. Então, moderação!!!

Passo 2 – Criar o método de carga

Devemos criar o método para carregar os dados como se fosse-mos trabalhar sem o multi-threading

Passo 3 – Declarar Objetos

Temos de declarar apenas 2 objeto s (Uma Thread e um Delegate)

private delegate void LoadDelegate(DataTable source); // Objeto Delegate com a Mesma Assinatura do Método de Iteração com o Controle
private System.Threading.Thread _Thread; // Objeto de Thread

Passo 4 – Inicializar a Thread

No Construtor, Form_Load ou no lugar que mais lhe agradar, inicialize a Thread

_Thread = new Thread(new ThreadStart(LoadDataThread));
_Thread.IsBackground = true; // Configura a Thread para Rodar em Background
_Thread.Start(); // Ativa a Thread

Passo 5 – Precisamos Definir a Iteração da Thread Criada com o Objeto da Interface de Usuário

Acontece que uma Thread não pode iteragir com o objeto criado por outra thread (estamos falando de objetos de interface de usuário “grids, labels, etc”). Iremos utilizar o método “BeginInvoke()” do controle de interface para essa operação.

this.dataGridView1.BeginInvoke(new LoadDelegate(FillData), new object[] { ds.Tables[0] });

Procedemos desta forma pois o método “BeginInvoke” será executado pela Thread que criou o controle “dataGridView1″ (Thread Principal) e utilizamos o Delegate para que esse método possa ser o responsável pela chamada ao método que irá realizar o DataBind com o “dataGridView1″. O método “BeginInvoke()” irá executar o Delegate e por sua vez o método “FillData”.

Posts Relacionados:

  1. Reflection – Parte 5 (Interfaces)
,

1 Reposta to “Windows Forms : Utilizando Thread’s para Carregar Informações”


  1. charles

    3 months ago

    tem algum exeplo desse completo pois nao deu pra entender bem como aplicalo. gostaria de usar essa ideia para um programa cliente/servidor onde as mensagem das classes cliente/servidor sao enviadas ao frame principal.

    vlw

    espero que posso ajudar-me!!

Deixa uma Resposta

znjdb32s6g