none
atualização de form RRS feed

  • Pergunta

  •  

    Bom dia pessoal,

     

    estou com um problema meio difícil de explicar...

    estou fazendo um windows application que o formulário principal chama um secundário, este secundário executa uma rotina de verificação de arquivo que demora um pouco... acontece que se o usuário clicar fora ou minimizar a tela do form secundário, quando clicar nele denovo ou restaurar, a tela fica branca, como se o sistema estivesse com erro, mas quando o processamento termina volta a tela normal.

    Eu tentei colocar um this.Refresh() dentro do While, mas isso não funcionou...

    Entenderão!?

    Sabe como me ajudar?

    Obrigado!!!

    quarta-feira, 30 de janeiro de 2008 11:29

Respostas

  • Olá, postei a execução de uma thread para um método sem parametros

     

    segue como fazer utilizando parâmetros.

     

    Code Snippet

    protected void Executa(string a, int b)

    {

    MessageBox.Show(a + b.ToString());

    }

     

    private void button1_Click(object sender, EventArgs e)

    {

    // Aqui você cria o delegate para a função Executa passando os parâmetros

    ThreadStart startExecuta = delegate { Executa("A", 2); };

    Thread th = new Thread(startExecuta);

    th.Start();

    }

     

     

     

    Espero que funcione

    quarta-feira, 30 de janeiro de 2008 12:39

Todas as Respostas

  • Você pode utilizar Thread para executar este processo demorado

    Code Snippet

     

    protected void Executa()

    {

    long x = 1;

    for (int i = 1; i < 10000000; i++)

    {

         x = x + i;

    }

    }

     

    private void button1_Click(object sender, EventArgs e)

    {

    System.Threading.Thread th = new System.Threading.Thread(new ThreadStart(Executa));

    th.Start();

    }

     

     

    ou no caso de não usar Thread, executar o método abaixo dentro do loop

     

    Code Snippet

    this.Update();

     

     

    Atenciosamente,
    quarta-feira, 30 de janeiro de 2008 11:44
  •  

    Olá Bruno,

     

    eu tentei mas não deu certo...

     

    primeiro eu tentei o Update, mas não funcionou...

    depois eu tentei a Thread, mas deu erro...

     

    System.Threading.Thread th = new System.Threading.Thread(new ThreadStart(verificaAlteracao(ds, lblCadastro.Text, lblCapital.Text)));

    th.Start();

     

     

    o método verificaAlteracao retorna void e recebe um dataset, e duas strings como parâmetros...

    isso pode influenciar???

    O erro é:

    "Method name expected"

     

    Obrigado!
    quarta-feira, 30 de janeiro de 2008 12:17
  • Olá, postei a execução de uma thread para um método sem parametros

     

    segue como fazer utilizando parâmetros.

     

    Code Snippet

    protected void Executa(string a, int b)

    {

    MessageBox.Show(a + b.ToString());

    }

     

    private void button1_Click(object sender, EventArgs e)

    {

    // Aqui você cria o delegate para a função Executa passando os parâmetros

    ThreadStart startExecuta = delegate { Executa("A", 2); };

    Thread th = new Thread(startExecuta);

    th.Start();

    }

     

     

     

    Espero que funcione

    quarta-feira, 30 de janeiro de 2008 12:39
  • Não deu certo,

     

    até que entrou no método, mas quando foi acrescentar o Value do Progress Bar, deu outro erro.
    "Operação entre threads inválida: controle 'frmAtualizarCadastro' acessado de um thread que não é aquele no qual foi criado."

     

    eu nunca tinha estudado sobre Threads, vou procurar saber mais!

    vc ajudou bastante!

    Muito obrigado!!!

    quarta-feira, 30 de janeiro de 2008 13:35
  • Procure saber sobre Sincronismo. pois você está tentando acessar um objeto de outra Thread, sua aplicação pertence a uma Thread e ao criar outra Thread vc precisa sincronizar para acessar objetos de outra.

     

     

    Explicação Básica mas da uma lida nisso, eu estou indo para uma reunião, caso ainda tenha dúvidas eu tento te ajudar ao voltar.

     

     

    Abraço

     

    quarta-feira, 30 de janeiro de 2008 14:00
  • Bruno,

     

    vc tem algum link para me indicar?

    Obrigado!!

     

    quarta-feira, 30 de janeiro de 2008 16:59
  • quarta-feira, 30 de janeiro de 2008 17:08