문제

저는 PowerPoint 2007 플러그인 역할을 하는 C# 프로그램을 작성하고 있습니다.일부 시스템에서는 PowerPoint 개체 모델에 대한 일부 호출로 인해 오류가 발생합니다. COMException 메시지와 함께 RPC_E_SYS_CALL_FAILED.이 오류와 관련하여 수행할 작업이나 이를 방지하는 방법에 대한 구체적인 조언을 찾을 수 없습니다.인터넷 검색을 통해 메시지 대기열이나 단일 스레드 아파트와 관련된 것으로 보입니다.아니면 내가 멀리 있는 걸까?

오류 메시지의 예는 다음과 같습니다.

시스템 호출이 실패했습니다.(HRESULT의 예외:0x80010100 (RPC_E_SYS_CALL_FAILED))
Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName()에서

불행하게도 문제는 클라이언트 컴퓨터에서 발생하고 있어서 디버깅할 수 있는 쉬운 방법이 없습니다.이 오류가 발생할 때마다 호출을 다시 시도해야 합니까?

이 문제를 해결하는 데 도움이 되는 조언을 주시면 감사하겠습니다!

도움이 되었습니까?

해결책

이것이 귀하의 문제와 관련이 있는지는 모르겠지만 모든 COM 호출은 추가 기능이 생성된 동일한 스레드 내에서 이루어져야 합니다.새 스레드를 생성한 경우 특별한 주의가 필요합니다.자세한 내용은 다음 두 문서에 설명되어 있습니다.

다른 팁

ApartmentState가 설정된 스레드에서 호출하고 있습니까?그렇지 않다면 그것이 범인일 수 있습니다. COM 상호 운용성은 그런 종류의 일에 꽤 까다롭습니다.

클라이언트의 보안 설정은 무엇입니까?클라이언트의 보안 설정(Windows/OS 설정 또는 PowerPoint/앱 설정)으로 인해 플러그인이 RPC를 통해 통신하는 것을 허용하지 않을 가능성이 높습니다.

백그라운드 스레드에서 Powerpoint 개체 모델을 호출하면 이런 일이 매우 쉽게 발생할 수 있습니다.그럴듯한 시나리오 중 하나는 일종의 상태 값을 주기적으로 확인하는 타이머를 갖는 것입니다.타이머가 실행될 때 Powerpoint가 사용 중이면(예: 대화 상자가 열려 있는 경우) 호출이 실패합니다.

이 Microsoft 문서에서는 Office의 스레딩 지원에 대한 개요를 제공합니다.http://msdn.microsoft.com/en-us/library/8sesy69e.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top