Q&A

  • thread에서 ADO Connection 생성
서비스 어플리케이션 프로그램을 제작하려고 프로젝트를 진행하고 있습니다.


File -> New 에서 Thread Object를 TADOThread로 하고
use에서 ADODB unit를 추가하고

private에서 adcnTest: TADOConnection; 추가하고

구현부에서 TADOThread.Execute;에서
adcnTest := TADOConnetion.Create(nil);을 추가하고 Run했더니


project ....exe raised exception class EOleSysError with message 'CoInitialize가 호출되지 않았습니다.' process stopped.
Use Step or Run to Continue. 라는 경고 메시지가 뜹니다.

그래서 여기저기 알아보니 Thread.execute부분에 CoInitialize(nil);을 추가하라고 하는것 같은데 이게 무슨 말인지......

이 Error메시지는 어떤경우 발생하는 겁니까?

그리고 이런경우 어떻게 해결해야 하는지요
2  COMMENTS
  • Profile
    한원희 2002.11.30 00:21
    안녕하세요. 한원희입니다.

    ADO는 내부적으로 COM으로 동작하기 때문에, COM을 사용을 초기화하기 위해서 CoInitialize를 호출하는 것입니다. 물론, 사용을 마친 후에는 CoUninitialize를 호출해서 사용을 마쳤다는 것을 알려주어야 하겠죠...

    Thread.Execute;
    begin
      CoInitialize(nil);

      ... // Something...


      CoUninitialize;
    end;

    이런식으로 할 수도 있겠지만, 한번만 호출을 하면 되기 때문에
    보통은 Initialization에서 CoInitialize를 하고, Finalization에서 CoUninitialize를 합니다. ^^;

    그럼, 즐푸하셈~

  • Profile
    이승필 2002.12.03 03:15
    답변 감사드립니다.

    도움이 많이 됐습니다.