안녕하세요?
항상 도움주셔서 감사합니다.
UI Thread에 Invoke 처리관련 궁금한 점이 있어서 질문드립니다.
아래와 같이 멀티스레드로 동작하는 threadFunc()함수가 있습니다.
private void threadFunc()
{
lock(lockobj)
{
mainForm.Invoke((MethodInvoker)(() =>
{
//멀티스레드간 동기화가 필요한 코드
}));
}
}
"//멀티스레드간 동기화가 필요한 코드" 부분을 메인 UI Thread에 Invoke 시켜서 처리할 경우
lock(lockobj) 부분이 없어도 무방한지 궁금합니다.
제가 생각할 때는 메인 UI Thread에 Invoke 시켜서 처리할 경우
메인 UI Thread 내에서 순차적으로 처리되기 때문에 마치 멀티스레드간 동기화가 된 것과 같이 동작하기 때문에
lock(lockobj) 부분은 없어도 될것 같은데 잘못 생각한 것일까요?
답변 주시면 감사하겠습니다.
감사합니다.
[최초 등록일: ]
[최종 수정일: 12/29/2022]