如何从另一个类中的另一个线程更新标签文本?

时间:2013-12-30 14:47:49

标签: c# multithreading user-interface

我对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类的新实例(上面显示的G​​UI)(尽管开始时没有意义),然后调用changeLabelText方法(它在某一点上也包含.Invoke方法,但是这不起作用(虽然没有引发异常)。

因此,为简单起见:如何从位于不同类中的其他线程更新GUI元素?

1 个答案:

答案 0 :(得分:0)

workerClass需要知道testApplication类的具体实例。 或者你可以在更高的范围内管理这个,并且知道两者。