我对C#比较陌生,我在查找如何在C#中更新Label的text属性方面遇到了一些困难。
为了澄清,我有一个明显存在于主线程中的标签,可以在名为myClass
的类中找到。
另一方面,工作线程方法位于名为workerClass
的类中。这两个类显然都在同一个命名空间中。这是示例代码:
GUI类:
namespace testApplication
{
public partial class testApplication : Form
{
///Code here
public void changeLabelText(String text)
{
label1.Text = text;
}
}
}
当然有一种方法可以启动一个线程以及所有这些,并且该部分工作正常。
worker类代码看起来与上面的类似(不自然地从Form类继承)。一切正常,除了我无法弄清楚如何从该工作线程/类更新GUI。我浏览了一些MSDN教程,但没有发现它们非常有用,主要是因为在他们的情况下,他们的所有方法都存在于一个类中。
我已经尝试在工作线程本身中创建一个testApplication类的新实例(上面显示的GUI)(尽管开始时没有意义),然后调用changeLabelText
方法(它在某一点上也包含.Invoke
方法,但是这不起作用(虽然没有引发异常)。
因此,为简单起见:如何从位于不同类中的其他线程更新GUI元素?
答案 0 :(得分:0)
workerClass需要知道testApplication类的具体实例。 或者你可以在更高的范围内管理这个,并且知道两者。