서비스 어플리케이션 프로그램을 제작하려고 프로젝트를 진행하고 있습니다.
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메시지는 어떤경우 발생하는 겁니까?
그리고 이런경우 어떻게 해결해야 하는지요
ADO는 내부적으로 COM으로 동작하기 때문에, COM을 사용을 초기화하기 위해서 CoInitialize를 호출하는 것입니다. 물론, 사용을 마친 후에는 CoUninitialize를 호출해서 사용을 마쳤다는 것을 알려주어야 하겠죠...
Thread.Execute;
begin
CoInitialize(nil);
... // Something...
CoUninitialize;
end;
이런식으로 할 수도 있겠지만, 한번만 호출을 하면 되기 때문에
보통은 Initialization에서 CoInitialize를 하고, Finalization에서 CoUninitialize를 합니다. ^^;
그럼, 즐푸하셈~