2012-10-16 79 views
0

我想學習一些有關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(); 
    } 

我希望這將有例外和以前一樣,但什麼都沒有發生,文本沒有改變。所以我爲我而努力。爲什麼會發生?希望有人能提供一些幫助。謝謝。

+0

奇怪,我得到異常也使用按鈕單擊 – Klaus78

+0

我再試一次,現在有異常,不知道爲什麼,也許我太粗心了:( – fork123x

回答

2

爲了更新從您必須使用調度另一個線程UI組件:

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

}