寫這篇記錄是因為在今天逛部落格,搜尋關于C#的資料,看到很多大神的神作,慚愧哦,自己寫的都是寫學習步驟,沒啥技術含量,但是作為自己的學習筆記,我願意這麼寫下去...加油!!!
在 何戈洲前輩 的作品中有關于C#--WPF的作品,我今天看了一些,很有用,這是他的C# -WPF篇的網站:http://www.cnblogs.com/hegezhou_hot/category/260429.html
大家可以去他那裡學習,我隻記錄自己今天的學習:
我用我上次的 C#學習之二---建立簡單的圖形應用程式-WPF 來做實驗,在裡面加了一個Button,改名為UI;
如圖:
其代碼如下:
private void textUi_Click(object sender, RoutedEventArgs e)
{
Thread t = new Thread(delegate()
{
this.userName.Text = " 測試UI";
});
t.Start();
}
運作會出現如下錯誤:
WPF中的UI控件,如果我們探究本質,他們都是從DispatcherObject繼承,是以都必須由UI線程進行排程和使用,如果我們在其他的背景線程中操作界面相關的元素時,就會出現如下的異常資訊:(這是複制過來的)
我們更改程式如下:
private void textUi_Click(object sender, RoutedEventArgs e)
{
Thread t = new Thread(delegate()
{
//this.userName.Text = " 測試UI";
this.userName.Dispatcher.Invoke(new Action(delegate() { userName.Text = " 測試UI"; }));
});
t.Start();
}
記得在開頭加上一句:
using System.Threading;
如下是運作結果,我們先點選UI,然後點選OK,結果如圖:
我們需要知道,最終還是由UI線程進行執行即可,當我們在WPF中進行多線程程式設計時需要特别的注意。在後面的MVVM程式設計的過程中,我們隊ViewModel中的綁定源對象進行修改時,也需要注意這個問題。(這是複制過來的)
在此感謝 何戈洲前輩 ,今天到此為止.
OVER!!!