임 WPF 응용 프로그램에서 작업 중입니다. MainWindow.xaml
에 "Status_label"이라는 라벨이 있습니다. 다른 클래스 (signIn.cs)에서 내용을 변경하려고합니다. 는 일반적으로 내가 할 수있어이WPF 메인 윈도우 레이블을 다른 클래스에서 변경하고 별도의 스레드
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 내 질문을 해결
status_lable.Dispatcher.Invoke(...)
왜 투표가 다운 되었습니까? – iJay
아마,이 질문은 번잡 한 시간에 응답 되었기 때문일 수 있습니다. 일부 '인터넷 검색'은 적절한 해결책을 제공합니다. – DHN