为什么Microsoft.Office.Interop.Excel.Application.Quit()使后台进程运行? [英] Why does Microsoft.Office.Interop.Excel.Application.Quit() leave the background process running?
本文介绍了为什么Microsoft.Office.Interop.Excel.Application.Quit()使后台进程运行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码使Microsoft Excel后台进程运行,直到我的程序退出之后:
The following code leaves a Microsoft Excel background process running, until after my program has exited:
var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = excelApplication.Workbooks.Open(file.FullName);
workbook.Close();
excelApplication.Workbooks.Close();
excelApplication.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);
为什么?我缺少什么?
推荐答案
获得!
应用程序。工作簿!= application.Workbooks
application.Workbooks != application.Workbooks
此属性不会公开变量,它会生成一个值。所以每次访问Workbooks属性时,我创建一个新的COM对象。
This property doesn't expose a variable, it generates a value. So every time I access the Workbooks property I create a new COM object.
我修复了代码,一切都很好。感谢大家。
I fixed the code and all is well. Thanks, everybody.
var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = workbooks.Open(pathToExcelWorkbook); // Fixed
workbook.Close();
workbooks.Close();
excelApplication.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);
这篇关于为什么Microsoft.Office.Interop.Excel.Application.Quit()使后台进程运行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文