CoInitFlags와 TOpenDialog

No Comments

음~~ 반갑지 않은 기술 COM…

 

AcroEdit 0.9.25.114 버전을 배포하면서 이전과는 달리 이 버전부터 메인 개발툴로 Delphi 2007을 사용하고 있습니다.

이전에 사용하던 Delphi 6도 별 문제는 없는데 여러가지 사소한 것들때문에 갈아타기로 했습죠…

후다닥 갈아탄 후에  0.9.25.114 버전을 배포했고 AcroDiff에서 파일 열기를 하면 프로그램이 얼어버린다는 피드백이 바로 들어옵니다.

 

어라~~ 이게 왜 이러냐… 하고 한참을 뒤져보는데 AcroEdit는 아무런 문제가 없고 유독 AcroDiff에서만 발생하고 있는겁니다.

여러가지로 검색해 본 결과 COM 문제라는 결론에 이르게 되는데…

시스템 대화상자가 COM을 기반으로 하고 있으며 COM 쓰레딩 모델 중 STA, MTA 모두 지원한다고 알고 있고 AcroEdit, AcroDiff 모두 프로그램 시작 시 COM 쓰레딩 모델을 COINIT_MULTITHREADED로 설정하고 있습니다.

프로젝트 소스의 Application.Initialize; 구문 전에 CoInitFlags := COINIT_MULTITHREADED; 를 넣어서 MTA로 설정합니다.

왜 MTA 로 설정하고 있는지는 오래 되서 기억이 가물가물한데 아마도 XML 엔진 때문이 아닌가 합니다.

 

아무튼 AcroDiff에서 CoInitFlags를 기본값으로 설정하니 위와 같은 문제는 발생하지 않는데…

같은 구문이 들어가 있는 AcroEdit는 이상이 없고 왜 AcroDiff만 그러는지 정확한 원인은 모르겠네요… 뷁..!