我试图了解WPF中的线程 这是代码段:
public MainWindow()
{
InitializeComponent();
start = delegate()
{
statusText.Text = "From Other Thread";
};
t = new Thread(start);
t.Start();
}
正如这本书所说,它将有例外,所以它是。我了解到这是因为有关调度线程的事情。然后我将一个代码行放入按钮单击处理函数中,如下面的代码:`
public partial class MainWindow : Window
{
ThreadStart start;
Thread t;
public MainWindow()
{
InitializeComponent();
start = delegate()
{
statusText.Text = "From Other Thread";
};
t = new Thread(start);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
t.Start();
}
我希望它会像以前一样有例外,但没有任何反应,文字也没有改变。所以我为我而且。为什么会这样?希望有人可以提供一些帮助。谢谢。
答案 0 :(得分:2)
要从另一个线程更新ui组件,您必须使用Dispatcher:
public MainWindow()
{
InitializeComponent();
start = delegate()
{
Dispatcher.BeginInvoke(((Action)(() => {statusText.Text = "From Other Thread";})));
};
t = new Thread(start);
}