C#
[WPF] 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다.
한걸음씩이라도
2020. 3. 12. 10:40
728x90
발생 전 상황
실시간 타이머를 사용 하려고 하였으나, .exe 종료와 함께 액세스 할 수 없다는 파업창이 발생 하였습니다.
발생 원인
데이터를 수신하는 스레드에서 프로그램 화면을 갱신시 문제가 발생.
원인 해결 방법
Dispatcher.Invoke(DispatcherPriority, Delegate)을 사용하여 주세요.
- [[여기]] 선택하시면 더욱 자세한 설명을 볼 수 있습니다.
- Dispatcher가 연결된 스레드에서 지정된 대리자를 동기적으로 실행합니다.
그러면 메인스레드와 동기화 되어 진행이 됩니다.
마무리.txthour.Text = sqptime.ToString();를
Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { txthour.Text = sqptime.ToString(); }));
으로 변경하여 진행 하였더니, 이상없이 잘 진행 되었습니다.
네임페이스는 System.Windows.Threading 입니다.
728x90