我已经尝试了 2 天来做到这一点。我查看了大量的 stackoverflow 答案并尝试了所有答案,但仍然遇到同样的问题。
我在 Windows 窗体上有一个标签。此 Windows 窗体上的唯一代码是:
var thread1 = new Thread(new ThreadStart(Censored.Signup));
thread1.Start();
现在,在 Windows 窗体上我也有一个标签。它的名字是“createdLabel”
在我一分钟前谈到的 thread1 (Censored.Signup) 上,我有以下代码(以及实际构成程序的其他代码,不相关):
int created = 0;
for (int i = 0; i < 10; i++)
{
created++;
createdLabel.Text = (string.Format("Created: [{0}]", created));
}
我想要的只是使用工作线程(Censored.Signup)中的信息(创建)更新标签(表单上的createdLabel)。
例如(“>”代表接下来/之后发生的事情):
label1 = 0 > Censored.Signup 中的循环运行并更新表单上的标签 > label1 = 1
我尝试尽可能将其表述为“像我 5 岁一样解释”,以尽量做到真正清晰,但如果有人感到困惑并且需要澄清任何内容,请告诉我。任何帮助将不胜感激。谢谢!
标签的内容只能从 UI 线程更改。使用Invoke
方法在具有正确文本的 UI 线程上执行回调
string text = string.Format("Created: [{0}]", created);
createdLabel.Invoke((Action)delegate { createdLabel.Text = text; });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)