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="給控制元件賦值"; //如果有其他操作也可以寫在這裡 }));