Frage

Ich schreibe einen C # -Programm, das als Powerpoint 2007-Plugin wirkt. Auf einigen Maschinen ein COMException mit der Nachricht RPC_E_SYS_CALL_FAILED einige Anrufe an das Powerpoint-Objektmodell werfen. Ich konnte keine spezifische Beratung finden, was diesen Fehler zu tun in Bezug auf, oder wie es zu vermeiden. Von googeln sieht es aus wie etwas, mit der Message Queue oder Single-Threaded-Apartment zu tun. Oder bin ich weg?

Beispiel für die Fehlermeldung lautet:

  

Systemaufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))
  bei Microsoft.Office.Interop.PowerPoint._Presentation.get_FullName ()

Leider ist das Problem auf einer Client-Maschine auftreten, so habe ich keine einfache Möglichkeit, es zu debuggen! Soll ich versuche nur die Anrufe, wenn ich diesen Fehler?

Jede Beratung, mir zu helfen dieses Problem zu beheben wäre sehr dankbar!

War es hilfreich?

Lösung

Ich weiß nicht, es zu einem Problem zu tun haben, sondern alle Ihre COM Anrufe kommen aus muss das Add-In im selben Thread erstellt wurde. Wenn Sie neue Themen erstellt wurden, müssen Sie besondere Sorgfalt walten lassen. Einzelheiten sind in diesen beiden Artikeln beschrieben:

Andere Tipps

machen Sie den Anruf von einem Thread mit seinem Apartment Satz? wenn nicht, das könnte die Ursache sein - COM-Interop ist ziemlich pingelig über diese Art der Sache

Was sind die Sicherheitseinstellungen des Kunden? Es ist durchaus möglich, dass sie die Sicherheitseinstellungen des Clients (Windows / OS Einstellungen oder Powerpoint / App-Einstellungen) werden Ihr Plug-in nicht zulassen, dass über RPC kommunizieren.

Dies kann sehr leicht passieren, wenn Sie Anrufe auf das Powerpoint-Objektmodell von einem Hintergrund-Thread zu machen. Ein plausibles Szenario wird mit einem Timer, der in regelmäßigen Abständen eine Art Statuswert überprüft. Wenn bei den Timer Bränden, Powerpoint besetzt ist (zum Beispiel eines Dialogfeld geöffnet ist) wird der Anruf fehlschlagen.

Mit diesem Microsoft-Artikel gibt einen Überblick über Unterstützung in Office Einfädeln: http://msdn.microsoft.com/en-us/library/8sesy69e. aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top