728x90
1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다.
2. "다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"
(The calling thread cannot access this object because a different thread owns it.)
최근 윈폼 프로그램을 WPF로 바꾸는 과정에서 주기적으로 창을 호출하는 과정에서 위 오류가 발생했다.
윈폼에서는 이런 일이 없었지만 WPF에서는 UI 스레드와 그렇지 않은 스레드로 나누고 있어 이런 오류가 발생한다.
이럴 때는 Dispatcher.Invoke를 이용하여 해결해야 한다.
Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate{}));
Dispatcher.Invoke(() =>
{
#TODO
UIThread() ... 등등
});
두 가지 방법 중 편한 것을 선택해서 활용하면 된다. 필자는 후자의 방법으로 막았다.
728x90
'정리가 필요한 카테고리(추후 정리) > C#,Unity' 카테고리의 다른 글
[WPF] Keyboard 클래스 (0) | 2018.05.09 |
---|---|
WPF] 어플리케이션 종료 방법 (0) | 2018.04.29 |
Xamarin] Nuget 패키지 설치 시 오류 해결 방법 (0) | 2018.04.08 |
C#WPF] 텍스트박스에 숫자만 입력하게 만들기 (0) | 2018.04.02 |
C#] C# 6.0 요약 (0) | 2018.03.08 |