为什么Microsoft.Office.Interop.Excel.Application.Quit()使后台进程运行? [英] Why does Microsoft.Office.Interop.Excel.Application.Quit() leave the background process running?

查看:1466
本文介绍了为什么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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆