WPF中使用線程操作控件,按平常的操作方法操作的話會報異常:調用線程無法訪問此對象,因為另一個線程擁有該對象。所以我們要使用Dispatcher類的BeginInvoke()與Invoke()方法。BeginInvoke()異步執行,不等待委托結束就更新,Invoke()同步執行,需等待委托執行完。
有一個Lable控件:
<Label x:Name="test" Content="測試"></Label>
1.獲取控件的值:
string lblContent =""; Dispatcher.Invoke(new Action(delegate { lblContent=test.Content.ToString(); //如果有其他操作也可以寫在這里 }));
2.給控件賦值:
Dispatcher.Invoke(new Action(delegate { test.Content="給控件賦值"; //如果有其他操作也可以寫在這里 }));