我有一個處理excel的應用程序。最近我遇到了一個Excel對象創建速度很慢的問題。如何調試慢Office應用程序互操作構造函數?
我已經重新發行這個簡單的代碼:
Microsoft.Office.Interop.Excel.Application xlApp;
xlApp = new Microsoft.Office.Interop.Excel.Application();
第二行導致的延遲。
爲了測量新對象分配所需的時間,上面的代碼已經用時間跟蹤解決方案進行了擴展,結果是確鑿的。在正常情況下,上述代碼在0.5s內執行,而在FAULTY-BEHAVIOR的情況下可能需要長達5分鐘。
沒有內存泄漏,並且正在釋放excel對象。我的解決方案全年24/7運行,沒有任何問題。我不確定它是否重要,但應用程序在20個單獨的用戶會話(服務器計算機)上運行。因此,此應用程序同時運行20個副本,並可能導致同時運行20個Excel副本。
第一次在2個月前發現問題,並已通過升級Office(2010 - > 2013)解決。這次我有更多的時間進行調查,可悲的結果並不樂觀。
事實:
- 只有一臺機器,目前受此問題的影響(24個CPU核心,拉姆的24GB)
- CPU完全不強調當 「延遲」 發生
- 我試過使用「進程監視器」應用程序來驗證當我們「新的Excel.Application()」構造函數(看看是否有任何過多的磁盤/內存/ CPU使用)時會發生什麼情況 - 沒有資源限制的跡象。沒有與COM對象相關的日誌文件的標誌等。
- 這裏唯一的問題是這幾分鐘的延遲。所有其他Excel Interop命令都照常工作。
主要問題:
- 有沒有辦法調試此Microsoft.Office.Interop.Excel.Application()構造函數,看看哪些部分是一個問題嗎?
外部內容
編輯 - 額外的測試
的PowerPoint構造不受延遲
ppApp = new Microsoft.Office.Interop.PowerPoint.Application();
據我所知,這個構造函數啓動Excel應用程序。你可以在這臺機器上手動啓動它並查看加載需要多長時間?也許它正在安裝插件? – Taosique
我認爲Interop在Excel啓動時默認禁用插件。該應用程序是否在登錄用戶配置文件或服務帳戶下運行? –
@Taosique - 可以毫不拖延地手動啓動Excel。 –