2015-04-16 26 views
0

我遇到了一個問題,即當我的應用程序到達某個Office Interop命令時,它簡直停滯不前,最近它是Word的關閉。應用程序停止處理,而Office Interop

worddoc.SaveAs("ExampleFile.doc", FileFormat:=Word.WdSaveFormat.wdFormatHTML, AddToRecentFiles:=False) 
worddoc.Close() 
wordap.Quit() 
wordap = Nothing 

在某些情況下,它是不可複製的,在所有的應用程序只需採空達到worddoc.close()後繼續。沒有ErrorMessage,沒有Windows告訴我「...停止工作」,什麼也沒有。當我停下來檢查應用程序的位置時,無論我恢復並重新啓動應用程序多少次(我總是在下一個操作之前的5到15秒之間等待),它總是指向我的worddoc.close短語,一點都不動。 當我有一個發佈配置時,並沒有出現過這個問題,並且在任何一個斷點處都沒有攔截,特別是它在將應用程序分發給最終用戶時從未出現過。

無論如何,我想知道是什麼原因導致這個問題,以及如何解決它,因爲今天我得到了告訴我,它也發生在年底的版本,至少對某些人郵件。

+0

重新編譯該項目併發送給他一個新的exe文件後,它再次工作,但無論如何,應該有一個原因卡在這裏 – lsteinme

+0

可能不是你想聽到的建議,但如果你可以解決問題沒有OfficeInterop,它會讓你的項目更容易維護。 – hometoast

+1

我知道,但在這種情況下它是不可能的(用戶想要一些功能是相當Word專有 – lsteinme

回答

0

嘗試使用Document類的SaveAs2方法,並指定完整路徑和文檔名稱作爲第一個參數傳遞(不僅僅是名稱)。

另外我會建議釋放代碼中的所有底層COM對象。完成使用後,請使用System.Runtime.InteropServices.Marshal.ReleaseComObject釋放Outlook對象。然後在Visual Basic中將變量設置爲Nothing(C#中的空值)以釋放對該對象的引用。

順便說一句你在哪裏運行代碼?它是一個Windows服務?

您是否有任何Word加載項正在運行?如果是這樣,請嘗試禁用所有這些。

相關問題