studio - Automatización de oficina COM de C#- RPC_E_SYS_CALL_FAILED
microsoft.office.interop.excel visual studio 2017 (4)
No sé si está relacionado con su problema, pero todas sus llamadas COM deben provenir del mismo subproceso en el que se creó su complemento. Si creó nuevos temas, debe tener especial cuidado. Los detalles se describen en estos dos artículos:
Estoy escribiendo un programa de C # que actúa como un complemento de PowerPoint 2007. En algunas máquinas, algunas llamadas al modelo de objetos de PowerPoint lanzan una 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. En Google, parece que tiene algo que ver con la cola de mensajes o los apartamentos de un solo subproceso. ¿O estoy lejos?
Ejemplo del mensaje de error es:
Llamada al sistema fallida (Excepción de HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))
en Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName ()
Desafortunadamente, el problema está ocurriendo en la máquina del cliente, ¡así que no tengo una manera fácil de solucionarlo! ¿Debería volver a intentar las llamadas cada vez que aparece este error?
¡Cualquier consejo para ayudarme a resolver este problema sería muy apreciado!
¿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 quisquillosa sobre 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 / App) 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 una cadena de fondo. Un escenario plausible es tener un temporizador que verifique periódicamente algún tipo de valor de estado. Si, cuando se dispara el temporizador, Powerpoint está ocupado (por ejemplo, un cuadro de diálogo está abierto), la llamada fallará.
Este artículo de Microsoft ofrece una descripción general del soporte de subprocesos en Office: http://msdn.microsoft.com/en-us/library/8sesy69e.aspx