C#

C# Dispatcher를 이용한 thread 점유에 의한 UI 객체 접근 불가 문제 이슈 해결

겨울꿈개발자 2020. 9. 14. 22:32

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