[프로그래밍] 크로스 스레드 오류 조치법에 대해...
2012.05.27 13:36
CheckForIllegalCrossThreadCalls = false
위와 같이 크로스 스레드 오류를 무시하는 옵션으로
추후 문제가 되신분 있나요 ?
위험하다고 하면서도 위의 기능으로해서 문제가 실제 발생하곤 하는지 궁금합니다.
2012.05.27 13:36
CheckForIllegalCrossThreadCalls = false
위와 같이 크로스 스레드 오류를 무시하는 옵션으로
추후 문제가 되신분 있나요 ?
위험하다고 하면서도 위의 기능으로해서 문제가 실제 발생하곤 하는지 궁금합니다.
답변이 없어서 허접한 의견을 적어봅니다. 문제를 해결하셨다면 이 댓글은 도움이 되지 않으실 것입니다.
크로스 스레드를 금지하는 이유는 안정성때문입니다. UI를 돌리는 스레드가 따로 있고, 유저매서드를 돌리는 스레드가 따로 있는데, 크로스 스레드는 유저매서드가 UI를 직접 통제하겠다는 의미를 가지게 됩니다. 따라서 스레드가 프로그램 또는 해당 프로시저의 종료시점까지 항상 존재하고 둘 다 이후에 사용되지 않을 경우에는 문제가 없지만, 그렇지 않을 경우에 문제가 되기 때문에 크로스 스레드를 금지하는 것입니다.
물론 마이크로소프트는 개발자가 최대한 쉽게 개발할 수 있도록 하기 때문에, 이러한 문제를 감수하고서라도 크로스 스레드를 사용하겠다는 옵션으로 위 플래그를 둔 것으로 보입니다.
하지만, 매우 원론적인 답변이나, 크로스 스레드가 발생하지 않는 구조로 변경하시는 것이 바람직합니다. 규모가 작고 단순하며, 오랫동안 사용할 일이 없는 단기적 프로그램이라면 문제가 되지 않겠지만, 그렇지 않은 경우에는 문제가 생길 수 있습니다. 필드에서는 이론상으로만 있을법한 일이 자주 일어나더라구요. 심지어는 CDMA도 혼선이 된다는 얘기를 듣고 깜짝 놀랐습니다. ^^;