프로그래밍/MFC
COM 인스턴스 만들기 실패
에어버스
2018. 5. 27. 17:03
COM 인스턴스 만들기 실패
메인스레드가 CDlg 임에도 메인 스레드에서 아래 함수를 직접 호출할때
ATL 서버 연결 실패(6행)가 되는 경우, 이벤트 처리 방식으로 이벤트 처리기에서 함수를 호출하도록한다.
1
2
3
4
5
6
7
8
9
10
11
12
13 |
BOOL CDlg::Request_거래()
{
// TODO: 여기에 구현 코드 추가.
CoInitialize(NULL);
CComPtr<IAPI4> spObject;
if (spObject.CoCreateInstance(__uuidof(API4), NULL, CLSCTX_LOCAL_SERVER) != S_OK)
{
AfxMessageBox(TEXT("ATL 서버 연결 실패!!!"));
return FALSE;
}
...
}
|
cs |
Request 뿐만 아니라 ReleaseRequestData() 요청할때도 동일 증상이 있어 이벤트 처리기로 해야 했다.
(e종목검색 때 RequestService() 요청하고 COM Release 할때 에러가 나는데, 조회TR 요청하고 COM 해제를 하면 ReleaseRequestData() 요청하는 COM 인스턴스를 만들지 못하는 오류가 발생한다. 동작 순서상으로는 COM 해제 후 ReleaseRequestData() 가 되어야 하는데, COM 해제시 ReleaseRequestData() 가 호출되어 오류가 나는거 같아, ReleaseRequestData() 를 직접 호출하지 않고 이벤트 처리기로 처리해서 시간을 조금 지연 시킴 - 정확한 원인은 모름)