Pregunta

Estoy escribiendo un programa en C# que actúa como complemento de PowerPoint 2007.En algunas máquinas, algunas llamadas al modelo de objetos de PowerPoint arrojan un COMException con el mensaje RPC_E_SYS_CALL_FAILED.No pude encontrar ningún consejo específico sobre qué hacer con respecto a este error o cómo evitarlo.Al buscar en Google, parece tener algo que ver con la cola de mensajes o los apartamentos de un solo subproceso.¿O estoy muy lejos?

Un ejemplo del mensaje de error es:

La llamada al sistema falló.(Excepción de HRESULT:0x80010100 (RPC_E_SYS_CALL_FAILED))
en Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName()

Desafortunadamente, el problema ocurre en la máquina de un cliente, por lo que no tengo una manera fácil de depurarlo.¿Debo volver a intentar las llamadas cada vez que recibo este error?

¡Cualquier consejo que me ayude a resolver este problema sería muy apreciado!

¿Fue útil?

Solución

No sé si está relacionado con su problema, pero todas sus llamadas COM deben provenir del mismo hilo en el que se creó su complemento.Si creaste nuevos hilos debes tener especial cuidado.Los detalles se describen en estos dos artículos:

Otros consejos

¿Estás haciendo la llamada desde un hilo con su conjunto ApartmentState?si no, ese podría ser el culpable: la interoperabilidad COM es bastante delicada con ese tipo de cosas

¿Cuáles son las configuraciones de seguridad del cliente?Es muy posible que la configuración de seguridad del cliente (ya sea la configuración de Windows/OS o la configuración de PowerPoint/aplicación) no permita que su complemento se comunique a través de RPC.

Esto puede suceder muy fácilmente si realiza llamadas al modelo de objetos de PowerPoint desde un hilo en segundo plano.Un escenario plausible es tener un temporizador que verifique periódicamente algún tipo de valor de estado.Si, cuando se activa el temporizador, Powerpoint está ocupado (por ejemplo, hay un cuadro de diálogo abierto), la llamada fallará.

Este artículo de Microsoft ofrece una descripción general de la compatibilidad con subprocesos en Office:http://msdn.microsoft.com/en-us/library/8sesy69e.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top