3

Microsoft.Office.Interop.Word.ApplicationClass用来阅读一组 Word 文档。我能够很好地阅读它们,但我注意到用于阅读这些文档的过程实际上从未根据 Windows 任务管理器结束。

从我的谷歌搜索来看,似乎没有其他人有这个问题,这让我相信我要么在做一些根本错误的事情,要么我缺乏有效地在谷歌搜索中表达我的问题的能力.

我对 C# 比较陌生,所以我怀疑是前者。在下面找到我用来创建文档“阅读器”实例的代码。

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并且不涉及wordAppor doc,因此我没有将它包含在代码段中。

似乎没有 .Dispose() 函数,Word.ApplicationClass所以我在这里有点茫然。

编辑-对不起,这里隐含的问题是:如何以编程方式结束该过程?

4

3 回答 3

4

您应该Word.Application在代码中使用该类,而不是Word.ApplicationClass

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

完成后,您需要明确关闭文档和 Word 应用程序:

doc.Close();
wordApp.Quit();
于 2012-06-08T18:01:46.020 回答
3

尝试在末尾添加以下内容readDoc()

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

于 2012-06-08T18:19:54.837 回答
2

这是一个常见问题,并在此知识库文章中进行了描述。

于 2012-06-08T21:40:54.753 回答