2017-01-19 9 views
1

C# 서버에서 C++ 클라이언트로 COM 이벤트를 처리하려고합니다. 서버 regfree를 사용할 수 있지만 내 이벤트는 더 이상 작동하지 않습니다.어떻게 COM 이벤트를 처리합니까?

이전에는 등록을 통해 클라이언트에서 이벤트가 ATL의 IDispEventImpl을 통해 처리되었습니다.

나는 직접적으로이 문제를 다루는 기사를 찾을 수 없었지만, IConnectionPoint은 본질적으로 등록이 필요 없다는 제안을 보았습니다.

나는 또한 IDispEventSimpleImpl가 regfree 일할 수 있다는 제안을 보았습니다.

답변

2

IDispEventImpl은 유형 라이브러리에 대한 액세스가 필요합니다.

<file name="mydll.tlb"> 
    <typelib 
     tlbid="{TLBID}" 
     version="1.0" 
     helpdir="" 
     flags="hasdiskimage"/> 
</file> 

클라이언트 싱크뿐만 아니라 형식 라이브러리 ID로 선언해야합니다 :이 활성화 컨텍스트에로드 할 수 있도록, 서버 매니페스트에 대한 참조를 포함해야합니다

class CMySink: public IDispEventImpl<1, CMySink, &IID_IEvent, &TLBID, 1, 0> 

대신 유형 라이브러리없이 작동하는 IDispEventSimpleImpl을 구현할 수도 있습니다.