WPF 如何在子线程里传值并更新界面UI

项目里有
MainWindow.xaml
AClass.cs 两个文件。
其中MainWindow里有一个TextBox 一个Button
其中AClass.cs下有一个Method()方法。

public class AClass
{
    public void Method()
    {
        string str; //要把这个值传到主界面并在TextBox上显示
    }
}

// MainWindow.xaml.cs 里的BUTTON事件
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    AClass a = new AClass();
    Thread aTh = new Thread(new ThreadStart(a.Method));
    aTh.Start();
}

如何把 Method 里的 str 传到 MainWindow.xaml 并且在 TextBox 里显示?

阅读 15.9k
3 个回答
新手上路,请多包涵

使用委托,或者全局变量

跨线程修改UI线程控件的值用UI线程的Dispatcher.BeginInvoke或Invoke方法。

新手上路,请多包涵

使用task来替代thread

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进