我使用另一个类中的线程编写来更新标签。标签是 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();
你怎么看,我将标签的引用传递给第二类的构造函数。在第二个类(扫描仪)中,我有一个名为“自动扫描仪”的方法,它应该使用以下代码更新标签:
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();
}
我在更新标签时收到此错误:
跨线程操作无效:从创建它的线程以外的线程访问的控件“主”
我将 .net 4 与 Winform C# 一起使用。
非常感谢您的回答。
新闻:问题是这一行:
trd.Join();
此行阻止了我的 GUI,并且标签未更新。有什么方法可以控制线程的结束并更新标签直到结束?谢谢