我在WPF應用程序上工作。我在MainWindow.xaml
中有一個名爲「Status_label」的標籤。並且我想從其他類(signIn.cs)更改其內容。 通常情況下,我能做到這一點從另一個類和單獨的線程更改WPF mainwindow標籤
var mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
mainWin.status_lable.Content = "Irantha signed in";
但我的問題是,當我試圖通過在signIn.cs類不同的線程訪問它,它給出了一個錯誤:
The calling thread cannot access this object because a different thread owns it.
我可以通過使用Dispatcher.Invoke(new Action(() =>{..........
還是別的來解決這個問題嗎?
編輯: 我要打電話從不同的類此標籤的變化行動,精心爲單獨的線程
MainWindow.xaml
<Label HorizontalAlignment="Left" Margin="14,312,0,0" Name="status_lable" Width="361"/>
SignIn.cs
internal void getStudentAttendence()
{
Thread captureFingerPrints = new Thread(startCapturing);
captureFingerPrints.Start();
}
void mySeparateThreadMethod()
{
var mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
mainWin.status_lable.Dispatcher.Invoke(new Action(()=> mainWin.status_lable.Content ="Irantha signed in"));
}
l INE VAR孟文返回錯誤The calling thread cannot access this object because a different thread owns it.
請指引我,
謝謝
爲什麼這是低票? – iJay 2013-03-15 06:25:06
也許,因爲這個問題已經回答了一個被人詬病的時代。一些'谷歌搜索'會爲您提供一個合適的解決方案。 – DHN 2013-03-15 07:52:37