내 Outlook 추가 기능에서 다음과 같이 rdoSession 개체를 사용해야 할 때마다 새 rdoSession 개체를 만들고 mapi 개체를 설정합니다.전체 추가 기능 응용 프로그램을 통해 단일 Redemption.rdosession 개체를 유지하는 방법
Redemption.RDOSession session = Redemption.RedemptionLoader.new_RDOSession(); session.MAPIOBJECT = outlookApplicaitonObject.Session.MAPIOBJECT;
전 세계적으로 하나 개의 정적 Redemption.rdoSession 객체를 가질 가능성이있다, 그래서 그것을 사용을 할 때마다 나는 그것을 호출 할 수 있습니다? 나는 정적 인 RdoSession 객체를 선언했고 때때로 예외를 던지기도한다.
'System .__ ComObject'유형의 COM 개체를 'Redemption.IRDOSession'인터페이스 유형으로 캐스팅 할 수 없습니다. 다음 오류로 인해 IID '{E54C5168-AA8C-405F-9C14-A4037302BD9D}'인터페이스의 COM 구성 요소에서 QueryInterface 호출이 실패했기 때문에이 작업이 실패했습니다. 형식 라이브러리/DLL을로드하는 동안 오류가 발생했습니다. (HRESULT 예외 : 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
이유는 무엇이며 내가하려는 일을 할 수 있습니까?
예. 문제는 다른 스레드를 사용하는 함수에서 발생합니다. –
혼란 스러울 때, 필요한 작업이 완료되거나 Outlook 종료시 세션 개체를 해제하는 것이 무엇보다 중요합니까? –
생성 된 보조 스레드에서 RDOSession을 해제해야합니다. 그렇지 않으면 해제되고 MAPIUninitialize가 GC 스레드에서 호출됩니다. –