关于WPF中线程的问题

时间:2012-10-16 12:21:08

标签: c# .net wpf

我试图了解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();
    }

我希望它会像以前一样有例外,但没有任何反应,文字也没有改变。所以我为我而且。为什么会这样?希望有人可以提供一些帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

要从另一个线程更新ui组件,您必须使用Dispatcher:

public MainWindow() 
{ 
   InitializeComponent(); 
   start = delegate() 
    { 
       Dispatcher.BeginInvoke(((Action)(() => {statusText.Text = "From Other Thread";})));
    }; 
    t = new Thread(start); 

}