Zaktualizuj etykietę z innego wątku [duplikat]

To pytanie ma już odpowiedź tutaj:

Cross-Thread Edycja kontrolek Winforms [duplikat] 1 odpowiedź

Używam wątku piszącego w innej klasie do aktualizacji etykiety. Etykieta jest zawarta w klasie głównej Winform.

 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();

Jak widzisz, przekazuję odwołanie do etykiety do konstruktora drugiej klasy. W drugiej klasie (skaner) mam metodę o nazwie „AutomaticScanner”, która powinna zaktualizować etykietę za pomocą tego kodu:

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();        
}

Otrzymuję ten błąd podczas aktualizacji etykiety:

Nieprawidłowa operacja krzyżowa: Kontrola „Main” dostępna z wątku innego niż wątek, który utworzono w

Używam .net 4 z Winform C #.

Bardzo dziękuję za odpowiedzi.

News: Problemem jest ta linia:

trd.Join();

Ten wiersz zablokował mój GUI i etykieta nie została zaktualizowana. Czy istnieją metody kontroli zakończenia wątku i aktualizacji etykiety do końca? Dzięk

questionAnswers(3)

yourAnswerToTheQuestion