Atualizar etiqueta de outro segmento [duplicado]
Esta pergunta já tem uma resposta aqui:
dição de controle de Winforms de thread cruzado [duplicado] 1 respostaUtilizo um thread escrito em outra classe para atualizar um rótulo. O rótulo é o conteúdo da classe Winform Mai
Scanner scanner = new Scanner(ref lblCont);
scanner.ListaFile = this.listFiles;
Thread trd = new Thread(new ThreadStart(scanner.automaticScanner));
trd.IsBackground = true;
trd.Start();
while (!trd.IsAlive) ;
trd.Join();
Como você pode ver, passo a referência do label no construtor da segunda classe. Na segunda classe (Scanner), eu tenho um método chamado "automaticScanner" que deve atualizar o rótulo com este código:
public Scanner(ref ToolStripStatusLabel _lblContatore)
{
lblCounter= _lblContatore;
}
Thread threadUpdateCounter = new Thread(new ThreadStart(this.UpdateCounter));
threadUpdateCounter.IsBackground = true;
threadUpdateCounter.Start();
while (!threadUpdateCounter .IsAlive) ;
threadUpdateCounter.Join();
private void AggiornaContatore()
{
this.lblCounter.Text = this.index.ToString();
}
Recebi este erro na atualização do marcador:
Operação de thread cruzado inválida: o controle 'Main' acessado de um thread que não seja o thread em que foi criado
Eu uso .net 4 com Winform C #.
Muito obrigado pelas respostas.
News: O problema é esta linha:
trd.Join();
Esta linha bloqueia minha GUI e a etiqueta não foi atualizada. Existem métodos para controlar o acabamento do encadeamento e atualizar o rótulo até o final? Obrigad