C#으로 프로그래밍을 하는 도중에 다음 이슈가 있었습니다.
"이미 다른 프로세스에 의해 점유된 객체에 접근할 수 없습니다.?" <- 아마 이런 에러메시지가 발생했었던 걸로 기억합니다.
해당 코드는 OutputBlock.Inlines.Add(logLine); 였습니다.
XAML로 추가한 텍스트 블록(변수명: OutputBlock)의 값을 다른 스레드에서 바꿔주려고 할때 해당 이슈가 있었습니다.
검색결과, Dispatcher를 사용하면 된다고 합니다.
Dispather.Invoke(DispatcherPriority.Normal, new Action(() => OutputBlock.Inlines.Add(logLine)));
위의 코드를 해당 백그라운드 스레드에 넣어주면 UI 객체 접근이 가능합니다.
해결 끝!
'C#' 카테고리의 다른 글
[C#] 람다식을 이용한 스레드 정의 (0) | 2020.09.05 |
---|---|
C# TwinCAT 설정 접근 방법 (ITcSysManager) (0) | 2020.06.28 |