2012-06-08 41 views
3

我正在使用Microsoft.Office.Interop.Word.ApplicationClass來讀取一組Word文檔。我能夠很好地閱讀它們,但是我注意到用於閱讀這些文檔的過程從未實際上根據Windows任務管理器結束。Word Application Class問題

從我已經Google'd,似乎沒有任何人有這個問題,這導致我相信我要麼做根本錯誤的事情,要麼我缺乏有效解釋我的問題的能力用於Google搜索。

我相對較新的C#,所以我懷疑前者。在下面查找我用來創建文檔'reader'實例的代碼。

private void readDoc(string docPath) 
{ 
    Word.ApplicationClass wordApp = new Word.ApplicationClass(); 
    object nullObj = System.Reflection.Missing.Value; 
    object roObj = true; 
    object objFile = docPath; 

    try 
    { 
     Word.Document doc = wordApp.Documents.Open(ref objFile, 
      ref nullObj, ref roObj, ref nullObj, ref nullObj, ref nullObj, 
      ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, 
      ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj); 
     doc.ActiveWindow.Selection.WholeStory(); 
     doc.ActiveWindow.Selection.Copy(); 
     IDataObject tmpData = Clipboard.GetDataObject(); 
     string docText = tmpData.GetData(DataFormats.Text).ToString(); 

      (...) 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Data); 
    } 
} 

的try塊涉及字符串docText,不涉及wordAppdoc休息,因此我還沒有在代碼段包括它。

對於Word.ApplicationClass似乎沒有.Dispose()函數,所以我在這裏有點遺憾。

編輯對不起,這裏隱含的問題是:如何以編程方式結束該過程?

回答

3

嘗試添加以下在readDoc()的末尾:

wordApp.Quit(ref nullObj, ref nullObj, ref nullObj);

+0

這似乎工作。謝謝。 –

4

你應該在你的代碼中使用Word.Application類,而不是Word.ApplicationClass

Word.Application wordApp = new Word.Application(); 

你需要明確關閉您的文檔和Word應用程序時,你就大功告成了:

doc.Close(); 
wordApp.Quit(); 
+0

我會給你一個鏡頭。謝謝。 –

+0

我正在使用'WordApp.Quit();'它正在關閉應用程序... 但是當我點擊開啓** Word **在任務中裸!我的形式是** TopMost **這是否與此有關,以及如何解決這個問題......? –

2

這是一個常見問題,並在this KB article中描述。

+0

有趣。但是,根據文章的最後部分,這個問題似乎只適用於2002和2003版本的.NET。 無論哪種方式,感謝您回覆此鏈接。我會贊成,但我缺乏'聲譽點'來這樣做。 –

+0

@Riequa,該問題仍然適用於更新版本的.NET。關於這個主題有很多StackOverflow問題,例如下面的問題(關於Excel,但問題對於任何Office應用程序都是一樣的):http://stackoverflow.com/questions/5189379/how-to-end-excel- EXE進程 – Joe