KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I use a thread writing in another class for update a label. The label is contents in Winform Main class. 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(); How you can see, i pass the reference of label into constructor of the second class. In the second class(Scanner) i've a method called "automaticScanner" that should update the label with this code: 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(); } I've receive this error on update of label: Cross-thread operation not valid: Control 'Main' accessed from a thread other than the thread it was created on I use .net 4 with Winform C#. Thanks a lot for answers. News: The problem is this line: trd.Join(); This line block my GUI and the lable was not update. There are methods to control the finish of thread and updating the label until the end? Thanks
Tags (comma-separated)
Save Edits
Cancel