我正在使用Microsoft.Office.Interop.Word.ApplicationClass
来阅读一组Word文档。我能够很好地阅读它们,但我注意到用于阅读这些文档的过程实际上根本不会根据Windows任务管理器结束。
从谷歌的角度来看,似乎没有其他人有这个问题,这让我相信我要么做一些根本错误的事情,要么我没有能力有效地说出我的问题谷歌搜索。
我对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
,不涉及wordApp
或doc
,因此我没有将其包含在代码段中。
Word.ApplicationClass
似乎没有.Dispose()函数,所以我在这里有点亏。
编辑 - 抱歉,这里隐含的问题是:如何以编程方式结束流程?
答案 0 :(得分:4)
您应该在代码中使用Word.Application
类而不是Word.ApplicationClass
:
Word.Application wordApp = new Word.Application();
完成后,您需要明确关闭文档和Word应用程序:
doc.Close();
wordApp.Quit();
答案 1 :(得分:3)
尝试在readDoc()
末尾添加以下内容:
wordApp.Quit(ref nullObj, ref nullObj, ref nullObj);
答案 2 :(得分:2)
这是一个常见问题,在this KB article中有描述。