Ich habe eine Anwendung, die sich mit Excel befasst. Kürzlich habe ich ein Problem mit sehr langsamen Erstellung von Excel-Objekt festgestellt.Debuggen langsamer Office-Anwendungs-Interop-Konstruktor?
Ich habe das Problem mit diesem einfachen Code neu:
Microsoft.Office.Interop.Excel.Application xlApp;
xlApp = new Microsoft.Office.Interop.Excel.Application();
Die zweite Zeile bewirkt, dass die Verzögerung.
Um den Zeitaufwand für die Neuzuordnung von Objekten zu messen, wurde der obige Code um die Zeiterfassungslösung erweitert und die Ergebnisse sind eindeutig. In der NORMAL-Situation wird der obige Code in 0,5 Sekunden ausgeführt, während im Falle von FEHLERBEHEBUNG es bis zu 5 Minuten dauern kann.
Es gibt keine Speicherlecks und Excel-Objekte werden ordnungsgemäß freigegeben. Meine Lösung lief das ganze Jahr rund um die Uhr ohne Probleme. Ich bin mir nicht sicher, ob es wichtig ist, aber die Anwendung läuft auf 20 separaten Benutzersitzungen (Server-Maschine). Es werden also 20 Kopien dieser Anwendung gleichzeitig ausgeführt und es können 20 Kopien von Excel zur gleichen Zeit ausgeführt werden.
Zum ersten Mal wurde das Problem vor 2 Monaten bemerkt und wurde durch Upgrade von Office (2010 -> 2013) behoben. Diesmal habe ich mehr Zeit zu untersuchen und leider sind die Ergebnisse nicht vielversprechend.
Fakten:
- nur eine Maschine zur Zeit von diesem Problem betroffen (24 CPU-Kern, 24 GB Ram)
- CPU ist überhaupt nicht gestresst, wenn die "Verzögerung" geschieht
- Ich habe versucht mit "Prozessmonitor" -Anwendung zu überprüfen, was passiert, wenn wir "neue Excel.Application()" -Konstruktor (um zu sehen, ob es eine übermäßige Festplatten-/Arbeitsspeicher/CPU-Nutzung ist) - keine Anzeichen von Ressourcenbeschränkungen. Keine Zeichen von Protokolldateien, die sich auf COM-Objekte usw. beziehen.
- Das einzige Problem hier ist diese paar Minuten Verzögerung. Alle anderen Excel Interop-Befehle funktionieren wie gewohnt.
Haupt Frage:
- Gibt es eine Möglichkeit, diese Microsoft.Office.Interop.Excel.Application zu debuggen() Konstruktor, um zu sehen, welchen Teil ist hier ein Thema?
Externer Inhalt
EDIT - weiterer Test
Powerpoint-Konstruktor wird nicht durch die Verzögerung betroffen
ppApp = new Microsoft.Office.Interop.PowerPoint.Application();
Soweit ich weiß, startet dieser Konstruktor Excel-App. Können Sie es manuell auf diesem Computer starten und sehen, wie lange es dauert, es zu laden? Vielleicht ist es Plugins installieren? – Taosique
Ich denke, dass Interop Plugins standardmäßig deaktiviert, wenn Excel startet. Wird die App unter dem angemeldeten Benutzerprofil oder unter einem Dienstkonto ausgeführt? –
@Taosique - Excel kann manuell ohne Verzögerung gestartet werden. –