Cuando mi código intenta crear una nueva instancia de Microsoft.Office.Interop.PowerPoint.Application
, a veces se produce la siguiente excepción:¿Cómo evito las excepciones RPC_E_CALL_REJECTED al realizar la automatización de PowerPoint?
System.Runtime.InteropServices.COMException (0x80010001): Retrieving the COM class factory for component with CLSID {91493441-5A91-11CF-8700-00AA0060263B} failed due to the following error: 80010001 Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)).
at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
veces digo porque no sucede constantemente, incluso dada la misma entrada. Además, también ocurre (con la misma falta de consistencia) en otras partes de mi código donde también interactúo con la API de automatización de PowerPoint.
He intentado con la solución this de MSDN, que parece ser la solución más recomendada. Sin embargo, no parece tener ningún impacto ya que todavía observo el mismo comportamiento.
Mis preguntas son:
- ¿Funciona solución de MSDN para la automatización de PowerPoint?
- ¿Cómo puedo verificar si lo he aplicado correctamente a mi código?
- ¿Alguien tiene una solución alternativa?
estoy usando C#, .NET 4 y PowerPoint 2007.
Me encuentro con el mismo problema. Tal vez agregar un Thread.Sleep (100) aquí y allá debería ayudar? Llenar un gráfico requiere cierto tiempo para actualizar grapics, etc. por lo que es posible que deba esperar antes de agregar más datos. – CodingBarfield