C# 如何从位于不同类中的另一个线程更新标签文本?
我是C语言的新手,我一直很难弄清楚如何准确地更新C语言中标签的文本属性 为了澄清,我有一个标签,它显然位于主线程中,可以在名为myClass的类中找到 另一方面,工作线程方法位于名为workerClass的类中。显然,这两个类都在同一个名称空间中。以下是示例代码: GUI类:C# 如何从位于不同类中的另一个线程更新标签文本?,c#,multithreading,user-interface,C#,Multithreading,User Interface,我是C语言的新手,我一直很难弄清楚如何准确地更新C语言中标签的文本属性 为了澄清,我有一个标签,它显然位于主线程中,可以在名为myClass的类中找到 另一方面,工作线程方法位于名为workerClass的类中。显然,这两个类都在同一个名称空间中。以下是示例代码: GUI类: namespace testApplication { public partial class testApplication : Form { ///Code here
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元素?workerClass需要知道testApplication类的具体实例。
或者,您可以在更高的范围内管理这两个方面。您使用的是WPF还是WinForms。如果是WPF,我可以分享一些示例代码。基本上,您需要在GUI线程上触发一个事件。这正是Invoke所做的;它向控件发送一条引用委托的消息,GUI线程而不是当前线程调用该委托作为处理该消息的一部分。您能否澄清这一点?我该怎么做?这需要一些关于如何创建workerClass实例以及如何创建IsInstance of testApplication的代码?i、 可能是程序的主要方法。