Pergunta

Eu estou escrevendo um programa C # que funciona como um plug-in 2007 PowerPoint. Em algumas máquinas, algumas chamadas para o modelo de objeto PowerPoint jogar um COMException com o RPC_E_SYS_CALL_FAILED mensagem. Eu não poderia encontrar qualquer aconselhamento específico sobre o que fazer em relação a este erro, ou como evitá-la. De pesquisando parece que algo a ver com a fila de mensagens ou single-threaded Apartments. Ou sou maneira I off?

Exemplo da mensagem de erro é:

chamada do sistema falhou. (Exceção de HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))
em Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName ()

Infelizmente, o problema está ocorrendo na máquina do cliente, por isso tenho nenhuma maneira fácil de depurá-lo! Devo apenas repetir as chamadas sempre que eu recebo este erro?

Algum conselho para me ajudar a resolver este problema seria muito apreciada!

Foi útil?

Solução

Eu não sei que está relacionado ao seu problema, mas todas as suas chamadas COM deve vir de dentro do mesmo segmento o suplemento foi criado. Se você criou novos tópicos que você deve tomar cuidado especial. Detalhes estão descritos nestes dois artigos:

Outras dicas

que você está fazendo a chamada de um segmento com seu conjunto ApartmentState? se não, que poderia ser o culpado - interoperabilidade é bastante exigente com esse tipo de coisa

Quais são as configurações de segurança do cliente? É bem possível que as configurações de segurança do cliente (Windows / configurações de sistema operacional ou configurações PowerPoint / APP) não permitirá que seu plug-in para se comunicar via RPC.

Este pode muito facilmente acontecer se você fizer todas as chamadas para o modelo de objeto do PowerPoint de uma discussão de fundo. Um cenário plausível é ter um timer que verifica periodicamente algum tipo de valor de status. Se, quando os incêndios temporizador, Powerpoint está ocupado (por exemplo, uma caixa de diálogo é aberta), a chamada falhará.

Este artigo Microsoft dá uma visão geral do suporte de threading no Office: http://msdn.microsoft.com/en-us/library/8sesy69e. aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top