Ich arbeite an einer WPF-Anwendung. Ich habe ein Label namens "Status_label" in MainWindow.xaml
. und ich möchte seinen Inhalt von einer anderen Klasse (signIn.cs) ändern. dieses Normalerweise Ändern Sie WPF Hauptfenster Label aus einer anderen Klasse und separaten Thread
var mainWin = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
mainWin.status_lable.Content = "Irantha signed in";
Ich bin in der Lage zu tun, aber mein Problem ist, wenn ich versuche, es in signIn.cs Klasse über anderen Thread zuzugreifen, gibt es eine Fehlermeldung:
The calling thread cannot access this object because a different thread owns it.
Kann ich das lösen, indem ich Dispatcher.Invoke(new Action(() =>{..........
oder etwas anderes benutze?
EDIT: Ich werde Anruf dieses Label ändert Aktion von anderer Klasse als-auch-als separater Thread
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 MainWin Rückkehr Fehler The calling thread cannot access this object because a different thread owns it.
Bitte leite mich,
Danke
Warum wird dies abgelehnt? – iJay
Vielleicht, weil diese Frage schon hundertmal beantwortet wurde. Etwas "googeln" würde Ihnen eine angemessene Lösung bieten. – DHN