Update Label von einem anderen Thread [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Threadübergreifende Bearbeitung von Winforms-Steuerelementen [duplizieren] 1 Antwort

Ich verwende einen Thread, der in einer anderen Klasse schreibt, um ein Label zu aktualisieren. Die Bezeichnung ist Inhalt der Klasse Winform Main.

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

Wie Sie sehen können, gebe ich die Referenz von label an den Konstruktor der zweiten Klasse weiter. In der zweiten Klasse (Scanner) habe ich eine Methode namens "automaticScanner", die das Etikett mit diesem Code aktualisieren soll:

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

Ich habe diesen Fehler beim Update des Labels erhalten:

Cross-Thread-Vorgang nicht gültig: Steuerung 'Main', auf die von einem anderen Thread als dem Thread zugegriffen wurde, auf dem er erstellt wurde

Ich verwende .net 4 mit Winform C #.

Vielen Dank für Antworten.

News: Das Problem ist diese Zeile:

trd.Join();

Diese Zeile blockiert meine GUI und das Label wurde nicht aktualisiert. Gibt es Methoden, um das Ende des Threads zu kontrollieren und das Etikett bis zum Ende zu aktualisieren? Vielen Dan

Antworten auf die Frage(3)

Ihre Antwort auf die Frage