Usuário com melhor resposta
atualização de form

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!!!
Respostas
-
Olá, postei a execução de uma thread para um método sem parametros
segue como fazer utilizando parâmetros.
Code Snippetprotected 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
th.Start();
}
Espero que funcione
Todas as Respostas
-
Você pode utilizar Thread para executar este processo demorado
Code Snippet{
{
x = x + i;
}
}
private
void button1_Click(object sender, EventArgs e){
System.Threading.
th.Start();
}
ou no caso de não usar Thread, executar o método abaixo dentro do loop
Code Snippetthis
.Update(); -
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! -
Olá, postei a execução de uma thread para um método sem parametros
segue como fazer utilizando parâmetros.
Code Snippetprotected 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
th.Start();
}
Espero que funcione
-
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!!!
-
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
-
-