로딩
요청 처리 중입니다...

C#] 크로스 스레드 작업이 잘못되었습니다.

 C#] 크로스 스레드 작업이 잘못되었습니다.

최근에 C#으로 간단한 응용 프로그램을 만들 일이 생겼습니다. 작업을 하다 보니 크로스 스레드 작업이 잘못되었단 문구를 맞딱드리게 되었는데...

그 이유는 바로 "멀티 태크스"(또는 멀티스레딩) 관련하여 문제가 생길 소지가 있는 것에 대해서 예외를 띄워주는 정책을 취하고 있더라구요. 그간 Unity로 게임 개발을 해왔고, 따로 멀티 프로세스를 거칠 일이 없어서 만날 일이 없었던 에러인데, 뒤늦게 이런 초보적인 문제와 맞딱드리고 있는 중이네요; 해결법은 생각보다 간단합니다.

위에 주석처리 되어 있는 구문을 열어(?)주면 됩니다.

Invoke는 실제 함수를 실행할 개체를 찾아서, 호출을 해주는 구문이라고 이해하시면 쉽습니다. 사실 InvokeRequired를 확인하지 않고 그냥 Invoke로 호출을 해도 됩니다만, 위의 내용을 보시면 아시겠지만 해당 오브젝트의 컨트롤이나 폼을 찾을 때까지 부모체인을 뒤지는 형태를 취합니다.

그렇기 때문에 바로 호출하는 것에 비해서는 확실히 느릴 수 밖에...